ClassLoader.DefineClass メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
DefineClass(Byte[], Int32, Int32) |
古い.
バイト配列を クラス |
DefineClass(String, ByteBuffer, ProtectionDomain) |
|
DefineClass(String, Byte[], Int32, Int32) |
バイト配列を クラス |
DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
バイト配列を クラス |
DefineClass(Byte[], Int32, Int32)
注意事項
deprecated
バイト配列を クラス Class
のインスタンスに変換します。
[Android.Runtime.Register("defineClass", "([BII)Ljava/lang/Class;", "")]
[System.Obsolete("deprecated")]
protected Java.Lang.Class? DefineClass (byte[]? b, int off, int len);
[<Android.Runtime.Register("defineClass", "([BII)Ljava/lang/Class;", "")>]
[<System.Obsolete("deprecated")>]
member this.DefineClass : byte[] * int * int -> Java.Lang.Class
パラメーター
- b
- Byte[]
クラス データを構成するバイト。 を介したoff+len-1
位置off
のバイトは、cite>The Java&trade で定義されている<有効なクラス ファイルの形式である必要があります。仮想マシンの仕様</引用>。
- off
- Int32
クラス データの b
開始オフセット
- len
- Int32
クラス データの長さ
戻り値
Class
指定したクラス データから作成されたオブジェクト
- 属性
例外
が有効なクラスを含まない場合 classRep
。
のlength
場合offset
、または が のclassRep
長さより大きい場合offset + length
は 。
注釈
バイト配列を クラス Class
のインスタンスに変換します。 を Class
使用する前に解決する必要があります。 このメソッドは、最初の引数としてバイナリ名を受け取り、より安全なバージョンを優先して非推奨とされています。
このメンバーは非推奨とされます。 に置き換えられました #defineClass(String, byte[], int, int) defineClass(String, byte[], int, int)
の java.lang.ClassLoader.defineClass(byte[], int, int)
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
適用対象
DefineClass(String, ByteBuffer, ProtectionDomain)
java.nio.ByteBuffer <tt>ByteBuffer</tt>
省略可能ProtectionDomain
な を使用して、 を クラスClass
のインスタンスに変換します。
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass (string? name, Java.Nio.ByteBuffer? b, Java.Security.ProtectionDomain? protectionDomain);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;", "")>]
member this.DefineClass : string * Java.Nio.ByteBuffer * Java.Security.ProtectionDomain -> Java.Lang.Class
パラメーター
- name
- String
必要なバイナリ名。 クラスの、または null
不明な場合は
クラス データを構成するバイト。 位置b.position()
から までのb.position() + b.limit() -1
バイトは、cite>The Java&trade で定義されている<有効なクラス ファイルの形式である必要があります。仮想マシンの仕様</引用>。
- protectionDomain
- ProtectionDomain
クラスの ProtectionDomain または null
。
戻り値
Class
データから作成された オブジェクトと、省略可能な ProtectionDomain
。
- 属性
例外
が有効なクラスを含まない場合 b
。
が に含まれるb
クラスの名前と等しくない場合className
。
注釈
java.nio.ByteBuffer <tt>ByteBuffer</tt>
省略可能ProtectionDomain
な を使用して、 を クラスClass
のインスタンスに変換します。 ドメインが の場合、 null
のドキュメント #defineClass(String, byte[], int, int)
で指定されているように、既定のドメインが クラスに割り当てられます。 クラスを使用する前に、それを解決する必要があります。
パッケージで定義されている最初のクラスに関する規則は、パッケージの証明書のセットを決定し、クラス名の制限は、 のドキュメント #defineClass(String, byte[], int, int, ProtectionDomain)
で指定されているものと同じです。
cl.defineClass(
name,
bBuffer,
pd)
という形式のこのメソッドを呼び出すと、 ステートメントとまったく同じ結果が生成されます
...<br> byte[] temp = new byte[bBuffer.
java.nio.ByteBuffer#remaining remaining
()];<br> bBuffer.java.nio.ByteBuffer#get(byte[]) get
(temp);<br> return #defineClass(String, byte[], int, int, ProtectionDomain) cl.defineClass
(name, temp, 0, temp.length, pd);<br>
1\.5 で追加されました。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
適用対象
DefineClass(String, Byte[], Int32, Int32)
バイト配列を クラス Class
のインスタンスに変換します。
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BII)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass (string? name, byte[]? b, int off, int len);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BII)Ljava/lang/Class;", "")>]
member this.DefineClass : string * byte[] * int * int -> Java.Lang.Class
パラメーター
- name
- String
クラスの予期されるバイナリ名。不明 null
な場合は
- b
- Byte[]
クラス データを構成するバイト。 を介したoff+len-1
位置off
のバイトは、cite>The Java&trade で定義されている<有効なクラス ファイルの形式である必要があります。仮想マシンの仕様</引用>。
- off
- Int32
クラス データの b
開始オフセット
- len
- Int32
クラス データの長さ
戻り値
Class
指定したクラス データから作成された オブジェクト。
- 属性
例外
が有効なクラスを含まない場合 classRep
。
のlength
場合offset
、または が のclassRep
長さより大きい場合offset + length
は 。
注釈
バイト配列を クラス Class
のインスタンスに変換します。 を Class
使用する前に解決する必要があります。
このメソッドは、新しく定義されたクラスに既定値 java.security.ProtectionDomain <tt>ProtectionDomain</tt>
を割り当てます。 ProtectionDomain
は、 が呼び出されたときに返されるのと同じアクセス許可セットを実質的にjava.security.Policy#getPermissions(java.security.CodeSource) <tt>Policy.getPolicy().getPermissions(new CodeSource(null, null))</tt>
付与します。 既定のドメインは、 の最初の #defineClass(String, byte[], int, int) <tt>defineClass</tt>
呼び出しで作成され、後続の呼び出しで再利用されます。
クラスに特定ProtectionDomain
の を割り当てるには、引数の 1 つとして をProtectionDomain
受け取る メソッドを使用#defineClass(String, byte[], int, int, java.security.ProtectionDomain) <tt>defineClass</tt>
します。
1.1 に追加されました。
の java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int)
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
適用対象
DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)
バイト配列を クラス Class
のインスタンスに変換します。省略可能です ProtectionDomain
。
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass (string? name, byte[]? b, int off, int len, Java.Security.ProtectionDomain? protectionDomain);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;", "")>]
member this.DefineClass : string * byte[] * int * int * Java.Security.ProtectionDomain -> Java.Lang.Class
パラメーター
- name
- String
クラスの予期されるバイナリ名。不明 null
な場合は
- b
- Byte[]
クラス データを構成するバイト。 を介したoff+len-1
位置off
のバイトは、cite>The Java&trade で定義されている<有効なクラス ファイルの形式である必要があります。仮想マシンの仕様</引用>。
- off
- Int32
クラス データの b
開始オフセット
- len
- Int32
クラス データの長さ
- protectionDomain
- ProtectionDomain
クラスの ProtectionDomain
戻り値
Class
データから作成された オブジェクトと、省略可能な ProtectionDomain
。
- 属性
例外
が有効なクラスを含まない場合 classRep
。
のlength
場合offset
、または が のclassRep
長さより大きい場合offset + length
は 。
が に含まれるclassRep
クラスの名前と等しくない場合className
。
注釈
バイト配列を クラス Class
のインスタンスに変換します。省略可能です ProtectionDomain
。 ドメインが の場合、 null
のドキュメント #defineClass(String, byte[], int, int)
で指定されているように、既定のドメインが クラスに割り当てられます。 クラスを使用する前に、それを解決する必要があります。
パッケージで定義されている最初のクラスは、そのパッケージで定義されているすべての後続のクラスに含める必要がある証明書の正確なセットを決定します。 クラスの証明書のセットは、 クラスの 内ProtectionDomain
からjava.security.CodeSource <tt>CodeSource</tt>
取得されます。 そのパッケージに追加されるクラスには、同じ証明書セットが含まれている必要があります。または、 SecurityException
がスローされます。 が null
の場合name
、このチェックは実行されないことに注意してください。 定義するクラスのバイナリ名とバイトを常に渡す必要があります。 これにより、定義するクラスが実際にそれが考えるクラスであることが保証されます。
" パッケージ内のすべてのクラスはブートストラップ クラス ローダーによってのみ定義できるため、指定した name
を "java.
"java.*
で始めることはできません。 が でないnull
場合name
は、バイト配列 "b
" で指定されたクラスのバイナリ名と等しい必要があります。それ以外の場合は、 NoClassDefFoundError <tt>NoClassDefFoundError</tt>
がスローされます。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。