다음을 통해 공유


ClassLoader.DefineClass 메서드

정의

오버로드

DefineClass(Byte[], Int32, Int32)
사용되지 않음.

바이트 배열을 클래스Class의 instance 변환합니다.

DefineClass(String, ByteBuffer, ProtectionDomain)

java.nio.ByteBuffer <tt>ByteBuffer</tt> 를 클래스 의 Classinstance 변환하고 선택적 ProtectionDomain을 사용합니다.

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

바이트 배열을 클래스Class의 instance 변환합니다.

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

바이트 배열을 선택적 ProtectionDomain를 사용하여 클래스 Class의 instance 변환합니다.

DefineClass(Byte[], Int32, Int32)

주의

deprecated

바이트 배열을 클래스Class의 instance 변환합니다.

[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 위치의 바이트는 Java&무역에서 정의한 <>대로 유효한 클래스 파일의 형식이어야 합니다. Virtual Machine 사양</인용>.

off
Int32

클래스 데이터의 시작 오프셋 b

len
Int32

클래스 데이터의 길이

반환

Class 지정된 클래스 데이터에서 만든 개체입니다.

특성

예외

classRep 유효한 클래스를 포함하지 않으면 입니다.

length offset 이고, 가 의 classRep길이보다 크면 offset + length 입니다.

설명

바이트 배열을 클래스Class의 instance 변환합니다. 를 Class 사용하려면 먼저 해결해야 합니다. 이 메서드는 이진 이름을 첫 번째 인수로 사용하고 더 안전한 버전을 위해 더 이상 사용되지 않습니다.

이 멤버는 더 이상 사용되지 않습니다. 으로 대체됨 #defineClass(String, byte[], int, int) defineClass(String, byte[], int, int)

에 대한 Java 설명서입니다 java.lang.ClassLoader.defineClass(byte[], int, int).

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

적용 대상

DefineClass(String, ByteBuffer, ProtectionDomain)

java.nio.ByteBuffer <tt>ByteBuffer</tt> 를 클래스 의 Classinstance 변환하고 선택적 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 간 바이트는 Java&무역에서 정의한 <>대로 유효한 클래스 파일의 형식이어야 합니다. Virtual Machine 사양</인용>.

protectionDomain
ProtectionDomain

클래스의 ProtectionDomain 또는 null입니다.

반환

Class 데이터에서 만든 개체 및 선택적 ProtectionDomain입니다.

특성

예외

b 유효한 클래스를 포함하지 않으면 입니다.

가 에 포함된 클래스의 이름과 같지 않으면 className 입니다 b.

설명

java.nio.ByteBuffer <tt>ByteBuffer</tt> 를 클래스 의 Classinstance 변환하고 선택적 ProtectionDomain을 사용합니다. 도메인이 null이면 의 설명서 #defineClass(String, byte[], int, int)에 지정된 대로 기본 도메인이 클래스에 할당됩니다. 클래스를 사용하려면 먼저 이 클래스를 확인해야 합니다.

패키지에 대한 인증서 집합을 결정하는 패키지에 정의된 첫 번째 클래스에 대한 규칙 및 클래스 이름에 대한 제한은 에 대한 #defineClass(String, byte[], int, int, ProtectionDomain)설명서에 지정된 것과 동일합니다.

양식 cl.defineClass(이름,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 설명서입니다 java.lang.ClassLoader.defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain).

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

적용 대상

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

바이트 배열을 클래스Class의 instance 변환합니다.

[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 위치의 바이트는 Java&무역에서 정의한 <>대로 유효한 클래스 파일의 형식이어야 합니다. Virtual Machine 사양</인용>.

off
Int32

클래스 데이터의 시작 오프셋 b

len
Int32

클래스 데이터의 길이

반환

Class 지정된 클래스 데이터에서 만든 개체입니다.

특성

예외

classRep 유효한 클래스를 포함하지 않으면 입니다.

length offset 이고, 가 의 classRep길이보다 크면 offset + length 입니다.

설명

바이트 배열을 클래스Class의 instance 변환합니다. 를 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 를 할당하려면 를 인수 중 하나로 사용하는 ProtectionDomain 메서드를 사용합니다#defineClass(String, byte[], int, int, java.security.ProtectionDomain) <tt>defineClass</tt>.

1.1에 추가되었습니다.

에 대한 Java 설명서입니다 java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int).

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

적용 대상

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

바이트 배열을 선택적 ProtectionDomain를 사용하여 클래스 Class의 instance 변환합니다.

[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 위치의 바이트는 Java&무역에서 정의한 <>대로 유효한 클래스 파일의 형식이어야 합니다. Virtual Machine 사양</인용>.

off
Int32

클래스 데이터의 시작 오프셋 b

len
Int32

클래스 데이터의 길이

protectionDomain
ProtectionDomain

클래스의 ProtectionDomain

반환

Class 데이터에서 만든 개체 및 선택적 ProtectionDomain입니다.

특성

예외

classRep 유효한 클래스를 포함하지 않으면 입니다.

length offset 이고, 가 의 classRep길이보다 크면 offset + length 입니다.

가 에 포함된 클래스의 이름과 같지 않으면 className 입니다 classRep.

설명

바이트 배열을 선택적 ProtectionDomain를 사용하여 클래스 Class의 instance 변환합니다. 도메인이 null이면 의 설명서 #defineClass(String, byte[], int, int)에 지정된 대로 기본 도메인이 클래스에 할당됩니다. 클래스를 사용하려면 먼저 이 클래스를 확인해야 합니다.

패키지에 정의된 첫 번째 클래스는 해당 패키지에 정의된 모든 후속 클래스에 포함되어야 하는 정확한 인증서 집합을 결정합니다. 클래스에 대한 인증서 집합은 클래스 내의 에서 java.security.CodeSource <tt>CodeSource</tt>ProtectionDomain 가져옵니다. 해당 패키지에 추가된 모든 클래스는 동일한 인증서 집합을 포함해야 합니다. 그렇지 SecurityException 않으면 이 throw됩니다. 가 이nullname 이 검사 수행되지 않습니다. 정의 중인 클래스의 이진 이름과 바이트를 항상 전달해야 합니다. 이렇게 하면 정의 중인 클래스가 실제로 클래스라고 생각되는 클래스가 됩니다.

"패키지의 모든 클래스는 부트스트랩 클래스 로더에서만 정의할 수 있으므로 지정된 name 은 "java."java.* 로 시작할 수 없습니다. 가 이 아닌 null경우 name 바이트 배열 "b"에 지정된 클래스의 이진 이름과 같아야 합니다. 그렇지 않으면 이 NoClassDefFoundError <tt>NoClassDefFoundError</tt> throw됩니다.

에 대한 Java 설명서입니다 java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain).

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

적용 대상