言語

ClassLoader.DefineClass メソッド

定義

オーバーロード

名前 説明
DefineClass(Byte[], Int32, Int32)
古い.

バイトの配列をクラス Classのインスタンスに変換します。

DefineClass(String, ByteBuffer, ProtectionDomain)

指定したjava.nio.ByteBuffer ByteBufferを使用して、Classをクラス ProtectionDomainのインスタンスに変換します。

DefineClass(String, Byte[], Int32, Int32)

バイトの配列をクラス Classのインスタンスに変換します。

DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)

特定のClassを使用して、バイト配列をクラス 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 + lengthclassRepの長さを超える場合。

注釈

バイトの配列をクラス 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
ByteBuffer

クラス データを構成するバイト。 b.position()までのb.position() + b.limit() -1位置からのバイトは、<cite>Java仮想マシン仕様</引用>で定義されている有効なクラス ファイルの形式である必要があります。

protectionDomain
ProtectionDomain

クラスの ProtectionDomain 、または null

返品

データから作成された Class オブジェクト、および ProtectionDomain

属性

例外

bに有効なクラスが含まれていない場合は。

classNamebに含まれるクラスの名前と等しくない場合は 。

注釈

指定したjava.nio.ByteBuffer ByteBufferを使用して、Classをクラス ProtectionDomainのインスタンスに変換します。 指定された ProtectionDomainnullされている場合は、 #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 で追加されました。

java.lang.ClassLoader.defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain)の Java ドキュメント。

このページの一部は、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 + lengthclassRepの長さを超える場合。

注釈

バイトの配列をクラス 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 + lengthclassRepの長さを超える場合。

classNameclassRepに含まれるクラスの名前と等しくない場合は 。

注釈

特定のClassを使用して、バイト配列をクラス ProtectionDomainのインスタンスに変換します。

指定された ProtectionDomainnullされている場合は、 #defineClass(String, byte[], int, int)のドキュメントで指定されているように、既定の保護ドメインがクラスに割り当てられます。 クラスを使用する前に、クラスを解決する必要があります。

パッケージで定義されている最初のクラスは、そのパッケージで定義されているすべての後続のクラスに含める必要がある証明書の正確なセットを決定します。 クラスの証明書のセットは、クラスのjava.security.CodeSource CodeSource内のProtectionDomainから取得されます。 そのパッケージに追加されるすべてのクラスには、同じ証明書のセットが含まれている必要があります。または、 SecurityException がスローされます。 namenullされている場合、このチェックは実行されないことに注意してください。 定義するクラスのバイナリ名とバイトを常に渡す必要があります。 これにより、定義しているクラスが実際に考えるクラスであることが保証されます。

このメソッドは、 Class のパッケージに対応するパッケージをこのクラス ローダーで定義します (このようなパッケージがこのクラス ローダーでまだ定義されていない場合)。 定義されたパッケージの名前は、バイト配列 bで指定されたクラスのバイナリ名から派生します。 定義されたパッケージのその他のプロパティは、 Packageで指定したとおりです。

java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain)の Java ドキュメント。

このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。

適用対象