ClassLoader.DefineClass メソッド

定義

オーバーロード

DefineClass(Byte[], Int32, Int32)
古い.

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

DefineClass(String, ByteBuffer, ProtectionDomain)

java.nio.ByteBuffer <tt>ByteBuffer</tt>省略可能ProtectionDomainな を使用して、 を クラスClassのインスタンスに変換します。

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+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
ByteBuffer

クラス データを構成するバイト。 位置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 で追加されました。

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

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象

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> がスローされます。

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

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象