ClassLoader.DefineClass Método

Definición

Sobrecargas

Nombre Description
DefineClass(Byte[], Int32, Int32)
Obsoletos.

Convierte una matriz de bytes en una instancia de la clase Class.

DefineClass(String, ByteBuffer, ProtectionDomain)

Convierte un java.nio.ByteBuffer ByteBuffer objeto en una instancia de la clase Class, con el especificado ProtectionDomain.

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

Convierte una matriz de bytes en una instancia de la clase Class.

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

Convierte una matriz de bytes en una instancia de la clase Class, con un determinado ProtectionDomain.

DefineClass(Byte[], Int32, Int32)

Precaución

deprecated

Convierte una matriz de bytes en una instancia de la clase 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

Parámetros

b
Byte[]

Bytes que componen los datos de clase. Los bytes de las posiciones a través off de deben tener el formato de un archivo de clase válido tal como se define mediante off+len-1la cita<The Java Virtual Machine Specification>/cite<.>

off
Int32

Desplazamiento inicial en b de los datos de clase

len
Int32

Longitud de los datos de clase

Devoluciones

Objeto Class que se creó a partir de los datos de clase especificados.

Atributos

Excepciones

si classRep no contiene una clase válida.

si es , o si offset length es mayor que la longitud de offset + length. classRep

Comentarios

Convierte una matriz de bytes en una instancia de la clase Class. Class Para poder usarlo, debe resolverse. Este método está en desuso en favor de la versión que toma un nombre binario como primer argumento y es más seguro.

Este miembro está en desuso. Reemplazado por #defineClass(String, byte[], int, int) defineClass(String, byte[], int, int)

Documentación de Java para java.lang.ClassLoader.defineClass(byte[], int, int).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

DefineClass(String, ByteBuffer, ProtectionDomain)

Convierte un java.nio.ByteBuffer ByteBuffer objeto en una instancia de la clase Class, con el especificado 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

Parámetros

name
String

Nombre binario esperado. de la clase o null si no se conoce

b
ByteBuffer

Bytes que componen los datos de clase. Los bytes de las posiciones b.position() a través b.position() + b.limit() -1 deben tener el formato de un archivo de clase válido tal y como se define en <>El Java Especificación< o cita> de máquina virtual.

protectionDomain
ProtectionDomain

ProtectionDomain de la clase o null.

Devoluciones

Objeto Class creado a partir de los datos y ProtectionDomain.

Atributos

Excepciones

si b no contiene una clase válida.

si className no es igual al nombre de la clase contenida en b.

Comentarios

Convierte un java.nio.ByteBuffer ByteBuffer objeto en una instancia de la clase Class, con el especificado ProtectionDomain. Si el elemento especificado ProtectionDomain es null, se asignará un dominio de protección predeterminado a la clase tal como se especifica en la documentación de #defineClass(String, byte[], int, int). Para poder usar la clase, debe resolverse.

Las reglas sobre la primera clase definida en un paquete que determina el conjunto de certificados para el paquete, las restricciones en los nombres de clase y el paquete definido de la clase son idénticos a los especificados en la documentación de #defineClass(String, byte[], int, int, ProtectionDomain).

Una invocación de este método delnombre.defineClass(cl deformulario,,pd) produce exactamente el mismo resultado que las instrucciones .

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

Agregado en 1.5.

Documentación de Java para java.lang.ClassLoader.defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

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

Convierte una matriz de bytes en una instancia de la clase 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

Parámetros

name
String

Nombre binario esperado de la clase o null si no se conoce

b
Byte[]

Bytes que componen los datos de clase. Los bytes de las posiciones a través off de deben tener el formato de un archivo de clase válido tal como se define mediante off+len-1la cita<The Java Virtual Machine Specification>/cite<.>

off
Int32

Desplazamiento inicial en b de los datos de clase

len
Int32

Longitud de los datos de clase

Devoluciones

Objeto Class que se creó a partir de los datos de clase especificados.

Atributos

Excepciones

si classRep no contiene una clase válida.

si es , o si offset length es mayor que la longitud de offset + length. classRep

Comentarios

Convierte una matriz de bytes en una instancia de la clase Class. Class Para poder usarlo, debe resolverse.

Este método asigna un valor predeterminado java.security.ProtectionDomain ProtectionDomain a la clase recién definida. ProtectionDomain se concede efectivamente el mismo conjunto de permisos devueltos cuando java.security.Policy#getPermissions(java.security.CodeSource) Policy.getPolicy().getPermissions(new CodeSource(null, null)) se invoca. El dominio de protección predeterminado se crea en la primera invocación de #defineClass(String, byte[], int, int) defineClassy se vuelve a usar en las invocaciones posteriores.

Para asignar un elemento específico ProtectionDomain a la clase , use el #defineClass(String, byte[], int, int, java.security.ProtectionDomain) defineClass método que toma como ProtectionDomain uno de sus argumentos.

Este método define un paquete en este cargador de clases correspondiente al paquete de Class (si dicho paquete aún no se ha definido en este cargador de clases). El nombre del paquete definido se deriva del nombre binario de la clase especificada por la matriz bde bytes . Otras propiedades del paquete definido son las especificadas por Package.

Agregado en la versión 1.1.

Documentación de Java para java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

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

Convierte una matriz de bytes en una instancia de la clase Class, con un determinado 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

Parámetros

name
String

Nombre binario esperado de la clase o null si no se conoce

b
Byte[]

Bytes que componen los datos de clase. Los bytes de las posiciones a través off de deben tener el formato de un archivo de clase válido tal como se define mediante off+len-1la cita<The Java Virtual Machine Specification>/cite<.>

off
Int32

Desplazamiento inicial en b de los datos de clase

len
Int32

Longitud de los datos de clase

protectionDomain
ProtectionDomain

de ProtectionDomain la clase

Devoluciones

Objeto Class creado a partir de los datos y ProtectionDomain.

Atributos

Excepciones

si classRep no contiene una clase válida.

si es , o si offset length es mayor que la longitud de offset + length. classRep

si className no es igual al nombre de la clase contenida en classRep.

Comentarios

Convierte una matriz de bytes en una instancia de la clase Class, con un determinado ProtectionDomain.

Si el elemento especificado ProtectionDomain es null, se asignará un dominio de protección predeterminado a la clase tal como se especifica en la documentación de #defineClass(String, byte[], int, int). Para poder usar la clase, debe resolverse.

La primera clase definida en un paquete determina el conjunto exacto de certificados que deben contener todas las clases posteriores definidas en ese paquete. El conjunto de certificados de una clase se obtiene de dentro java.security.CodeSource CodeSourceProtectionDomain de de la clase . Las clases agregadas a ese paquete deben contener el mismo conjunto de certificados o se producirá una SecurityException excepción . Tenga en cuenta que, si name es null, esta comprobación no se realiza. Siempre debe pasar el nombre binario de la clase que va a definir, así como los bytes. Esto garantiza que la clase que está definiendo es realmente la clase que cree que es.

Este método define un paquete en este cargador de clases correspondiente al paquete de Class (si dicho paquete aún no se ha definido en este cargador de clases). El nombre del paquete definido se deriva del nombre binario de la clase especificada por la matriz bde bytes . Otras propiedades del paquete definido son las especificadas por Package.

Documentación de Java para java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a