ClassLoader.DefineClass Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| Name | Beschreibung |
|---|---|
| DefineClass(Byte[], Int32, Int32) |
Veraltet.
Wandelt ein Bytearray in eine Instanz der Klasse |
| DefineClass(String, ByteBuffer, ProtectionDomain) |
Konvertiert eine |
| DefineClass(String, Byte[], Int32, Int32) |
Wandelt ein Bytearray in eine Instanz der Klasse |
| DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
Konvertiert ein Bytearray in eine Instanz der Klasse |
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
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.
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
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.