Sprache

ClassLoader.DefineClass Methode

Definition

Überlädt

Name Beschreibung
DefineClass(Byte[], Int32, Int32)
Veraltet.

Wandelt ein Bytearray in eine Instanz der Klasse Classum.

DefineClass(String, ByteBuffer, ProtectionDomain)

Konvertiert eine java.nio.ByteBuffer ByteBuffer in eine Instanz der Klasse Classmit der angegebenen ProtectionDomain.

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

Wandelt ein Bytearray in eine Instanz der Klasse Classum.

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

Konvertiert ein Bytearray in eine Instanz der Klasse Classmit einer angegebenen ProtectionDomain.

DefineClass(Byte[], Int32, Int32)

Achtung

deprecated

Wandelt ein Bytearray in eine Instanz der Klasse Classum.

[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

Parameter

b
Byte[]

Die Bytes, aus denen die Klassendaten bestehen. Die Byte in Positionen offoff+len-1 sollten das Format einer gültigen Klassendatei aufweisen, wie durch <zitate>"The Java Virtual Machine Specification</cite>" definiert.

off
Int32

Der Anfangsoffset in b den Klassendaten

len
Int32

Die Länge der Klassendaten

Gibt zurück

Das Class Objekt, das aus den angegebenen Klassendaten erstellt wurde

Attribute

Ausnahmen

wenn classRep keine gültige Klasse enthalten ist.

if offset , length or if offset + length is greater than the length of classRep.

Hinweise

Wandelt ein Bytearray in eine Instanz der Klasse Classum. Bevor sie Class verwendet werden kann, muss sie aufgelöst werden. Diese Methode ist zugunsten der Version veraltet, die einen binären Namen als erstes Argument verwendet und sicherer ist.

Dieses Element ist veraltet. Ersetzt durch #defineClass(String, byte[], int, int) defineClass(String, byte[], int, int)

Java Dokumentation für java.lang.ClassLoader.defineClass(byte[], int, int).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

DefineClass(String, ByteBuffer, ProtectionDomain)

Konvertiert eine java.nio.ByteBuffer ByteBuffer in eine Instanz der Klasse Classmit der angegebenen 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

Parameter

name
String

Der erwartete binäre Name. der Klasse oder null wenn sie nicht bekannt ist

b
ByteBuffer

Die Bytes, aus denen die Klassendaten bestehen. Die Byte von Positionen b.position() bis b.position() + b.limit() -1 hin sollten das Format einer gültigen Klassendatei aufweisen, wie durch <zitate>"The Java Virtual Machine Specification</cite>" definiert.

protectionDomain
ProtectionDomain

Der ProtectionDomain der Klasse oder null.

Gibt zurück

Das Class Objekt, das aus den Daten erstellt wurde, und ProtectionDomain.

Attribute

Ausnahmen

wenn b keine gültige Klasse enthalten ist.

if className is not equal to the name of the class contained in b.

Hinweise

Konvertiert eine java.nio.ByteBuffer ByteBuffer in eine Instanz der Klasse Classmit der angegebenen ProtectionDomain. Wenn das angegebene ProtectionDomain ist null, wird der Klasse eine Standardschutzdomäne zugewiesen, wie in der Dokumentation #defineClass(String, byte[], int, int)angegeben. Bevor die Klasse verwendet werden kann, muss sie aufgelöst werden.

Die Regeln über die erste Klasse, die in einem Paket definiert ist, die den Satz von Zertifikaten für das Paket bestimmt, die Einschränkungen für Klassennamen und das definierte Paket der Klasse sind mit denen identisch, die in der Dokumentation #defineClass(String, byte[], int, int, ProtectionDomain)angegeben sind.

Ein Aufruf dieser Methode des Formulars cl.defineClass(name,bBuffer,pd) liefert genau dasselbe Ergebnis wie die Anweisungen.

...<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>

Hinzugefügt in 1.5.

Java Dokumentation für java.lang.ClassLoader.defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Wandelt ein Bytearray in eine Instanz der Klasse Classum.

[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

Parameter

name
String

Der erwartete binäre Name der Klasse oder null falls nicht bekannt

b
Byte[]

Die Bytes, aus denen die Klassendaten bestehen. Die Byte in Positionen offoff+len-1 sollten das Format einer gültigen Klassendatei aufweisen, wie durch <zitate>"The Java Virtual Machine Specification</cite>" definiert.

off
Int32

Der Anfangsoffset in b den Klassendaten

len
Int32

Die Länge der Klassendaten

Gibt zurück

Das Class Objekt, das aus den angegebenen Klassendaten erstellt wurde.

Attribute

Ausnahmen

wenn classRep keine gültige Klasse enthalten ist.

if offset , length or if offset + length is greater than the length of classRep.

Hinweise

Wandelt ein Bytearray in eine Instanz der Klasse Classum. Bevor sie Class verwendet werden kann, muss sie aufgelöst werden.

Diese Methode weist der neu definierten Klasse einen Standardwert java.security.ProtectionDomain ProtectionDomain zu. Der ProtectionDomain Gleiche Satz von Berechtigungen wird effektiv gewährt, die beim java.security.Policy#getPermissions(java.security.CodeSource) Policy.getPolicy().getPermissions(new CodeSource(null, null)) Aufrufen zurückgegeben werden. Die Standardschutzdomäne wird beim ersten Aufruf von #defineClass(String, byte[], int, int) defineClass, und bei nachfolgenden Aufrufen erneut verwendet.

Verwenden Sie die ProtectionDomain Methode, die als eines der Argumente verwendet wird, um der Klasse eine #defineClass(String, byte[], int, int, java.security.ProtectionDomain) defineClass bestimmte ProtectionDomain Klasse zuzuweisen.

Diese Methode definiert ein Paket in diesem Klassenladeprogramm, das dem Paket des Pakets Class entspricht (wenn ein solches Paket nicht bereits in diesem Klassenladeprogramm definiert wurde). Der Name des definierten Pakets wird vom binären Namen der durch das Bytearray bangegebenen Klasse abgeleitet. Andere Eigenschaften des definierten Pakets sind wie angegeben.Package

In 1.1 hinzugefügt.

Java Dokumentation für java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Konvertiert ein Bytearray in eine Instanz der Klasse Classmit einer angegebenen 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

Parameter

name
String

Der erwartete binäre Name der Klasse oder null falls nicht bekannt

b
Byte[]

Die Bytes, aus denen die Klassendaten bestehen. Die Byte in Positionen offoff+len-1 sollten das Format einer gültigen Klassendatei aufweisen, wie durch <zitate>"The Java Virtual Machine Specification</cite>" definiert.

off
Int32

Der Anfangsoffset in b den Klassendaten

len
Int32

Die Länge der Klassendaten

protectionDomain
ProtectionDomain

Der ProtectionDomain Kurs

Gibt zurück

Das Class Objekt, das aus den Daten erstellt wurde, und ProtectionDomain.

Attribute

Ausnahmen

wenn classRep keine gültige Klasse enthalten ist.

if offset , length or if offset + length is greater than the length of classRep.

if className is not equal to the name of the class contained in classRep.

Hinweise

Konvertiert ein Bytearray in eine Instanz der Klasse Classmit einer angegebenen ProtectionDomain.

Wenn das angegebene ProtectionDomain ist null, wird der Klasse eine Standardschutzdomäne zugewiesen, wie in der Dokumentation #defineClass(String, byte[], int, int)angegeben. Bevor die Klasse verwendet werden kann, muss sie aufgelöst werden.

Die erste in einem Paket definierte Klasse bestimmt den genauen Satz von Zertifikaten, die alle nachfolgenden Klassen enthalten müssen, die in diesem Paket definiert sind. Der Satz von Zertifikaten für eine Klasse wird aus dem java.security.CodeSource CodeSource Innerhalb ProtectionDomain der Klasse abgerufen. Alle Klassen, die diesem Paket hinzugefügt werden, müssen denselben Satz von Zertifikaten enthalten, oder eine SecurityException wird ausgelöst. Beachten Sie, dass in diesem Fall namenulldiese Überprüfung nicht ausgeführt wird. Sie sollten immer den binären Namen der Klasse übergeben, die Sie definieren, sowie die Bytes. Dadurch wird sichergestellt, dass die klasse, die Sie definieren, tatsächlich die Klasse ist, die Sie glauben.

Diese Methode definiert ein Paket in diesem Klassenladeprogramm, das dem Paket des Pakets Class entspricht (wenn ein solches Paket nicht bereits in diesem Klassenladeprogramm definiert wurde). Der Name des definierten Pakets wird vom binären Namen der durch das Bytearray bangegebenen Klasse abgeleitet. Andere Eigenschaften des definierten Pakets sind wie angegeben.Package

Java Dokumentation für java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: