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を介してoff+len-1位置のバイト数は、<cite>Java仮想マシン仕様</引用>で定義されている有効なクラス ファイルの形式である必要があります。
- off
- Int32
クラス データの b の開始オフセット
- len
- Int32
クラス データの長さ
返品
指定したクラス データから作成された Class オブジェクト
- 属性
例外
classRepに有効なクラスが含まれていない場合は。
offset 、length 、またはoffset + lengthがclassRepの長さを超える場合。
注釈
バイトの配列をクラス Classのインスタンスに変換します。
Classを使用するには、その前に解決する必要があります。 このメソッドは、最初の引数としてバイナリ名を受け取り、より安全なバージョンを優先して非推奨とされます。
このメンバーは非推奨です。
#defineClass(String, byte[], int, int) defineClass(String, byte[], int, int) によって置き換えられました
java.lang.ClassLoader.defineClass(byte[], int, int)の Java ドキュメント。
このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。
適用対象
DefineClass(String, ByteBuffer, ProtectionDomain)
指定したjava.nio.ByteBuffer ByteBufferを使用して、Classをクラス ProtectionDomainのインスタンスに変換します。
[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>Java仮想マシン仕様</引用>で定義されている有効なクラス ファイルの形式である必要があります。
- protectionDomain
- ProtectionDomain
クラスの ProtectionDomain 、または null。
返品
データから作成された Class オブジェクト、および ProtectionDomain。
- 属性
例外
bに有効なクラスが含まれていない場合は。
classNameがbに含まれるクラスの名前と等しくない場合は 。
注釈
指定したjava.nio.ByteBuffer ByteBufferを使用して、Classをクラス ProtectionDomainのインスタンスに変換します。 指定された ProtectionDomain が nullされている場合は、 #defineClass(String, byte[], int, int)のドキュメントで指定されているように、既定の保護ドメインがクラスに割り当てられます。 クラスを使用する前に、クラスを解決する必要があります。
パッケージの証明書のセット、クラス名の制限、およびクラスの定義されたパッケージを決定するパッケージで定義されている最初のクラスに関する規則は、 #defineClass(String, byte[], int, int, ProtectionDomain)のドキュメントで指定されているものと同じです。
フォーム cl.defineClass(name,bBuffer,pd) のこのメソッドを呼び出すと、ステートメントとまったく同じ結果が生成されます
...<br> byte[] temp = new byte[bBuffer.{@link java.nio.ByteBuffer#remaining remaining}()];<br> bBuffer.{@link java.nio.ByteBuffer#get(byte[]) get}(temp);<br> return {@link #defineClass(String, byte[], int, int, ProtectionDomain) cl.defineClass}(name, temp, 0, temp.length, pd);<br>
1\.5 で追加されました。
このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.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を介してoff+len-1位置のバイト数は、<cite>Java仮想マシン仕様</引用>で定義されている有効なクラス ファイルの形式である必要があります。
- off
- Int32
クラス データの b の開始オフセット
- len
- Int32
クラス データの長さ
返品
指定したクラス データから作成された Class オブジェクト。
- 属性
例外
classRepに有効なクラスが含まれていない場合は。
offset 、length 、またはoffset + lengthがclassRepの長さを超える場合。
注釈
バイトの配列をクラス Classのインスタンスに変換します。
Classを使用するには、その前に解決する必要があります。
このメソッドは、新しく定義されたクラスに既定の java.security.ProtectionDomain ProtectionDomain を割り当てます。
ProtectionDomainには、java.security.Policy#getPermissions(java.security.CodeSource) Policy.getPolicy().getPermissions(new CodeSource(null, null))が呼び出されたときに返されるのと同じアクセス許可セットが実質的に付与されます。 既定の保護ドメインは、 #defineClass(String, byte[], int, int) defineClassの最初の呼び出しで作成され、後続の呼び出しで再利用されます。
クラスに特定のProtectionDomainを割り当てるには、#defineClass(String, byte[], int, int, java.security.ProtectionDomain) defineClassを引数の 1 つとして受け取るProtectionDomain メソッドを使用します。
このメソッドは、 Class のパッケージに対応するパッケージをこのクラス ローダーで定義します (このようなパッケージがこのクラス ローダーでまだ定義されていない場合)。 定義されたパッケージの名前は、バイト配列 bで指定されたクラスのバイナリ名から派生します。 定義されたパッケージのその他のプロパティは、 Packageで指定したとおりです。
1.1 で追加されました。
java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int)の Java ドキュメント。
このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。
適用対象
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を介してoff+len-1位置のバイト数は、<cite>Java仮想マシン仕様</引用>で定義されている有効なクラス ファイルの形式である必要があります。
- off
- Int32
クラス データの b の開始オフセット
- len
- Int32
クラス データの長さ
- protectionDomain
- ProtectionDomain
クラスのProtectionDomain
返品
データから作成された Class オブジェクト、および ProtectionDomain。
- 属性
例外
classRepに有効なクラスが含まれていない場合は。
offset 、length 、またはoffset + lengthがclassRepの長さを超える場合。
classNameがclassRepに含まれるクラスの名前と等しくない場合は 。
注釈
特定のClassを使用して、バイト配列をクラス ProtectionDomainのインスタンスに変換します。
指定された ProtectionDomain が nullされている場合は、 #defineClass(String, byte[], int, int)のドキュメントで指定されているように、既定の保護ドメインがクラスに割り当てられます。 クラスを使用する前に、クラスを解決する必要があります。
パッケージで定義されている最初のクラスは、そのパッケージで定義されているすべての後続のクラスに含める必要がある証明書の正確なセットを決定します。 クラスの証明書のセットは、クラスのjava.security.CodeSource CodeSource内のProtectionDomainから取得されます。 そのパッケージに追加されるすべてのクラスには、同じ証明書のセットが含まれている必要があります。または、 SecurityException がスローされます。
nameがnullされている場合、このチェックは実行されないことに注意してください。 定義するクラスのバイナリ名とバイトを常に渡す必要があります。 これにより、定義しているクラスが実際に考えるクラスであることが保証されます。
このメソッドは、 Class のパッケージに対応するパッケージをこのクラス ローダーで定義します (このようなパッケージがこのクラス ローダーでまだ定義されていない場合)。 定義されたパッケージの名前は、バイト配列 bで指定されたクラスのバイナリ名から派生します。 定義されたパッケージのその他のプロパティは、 Packageで指定したとおりです。
このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。