ClassLoader.DefineClass Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| DefineClass(Byte[], Int32, Int32) |
Obsoletos.
Convierte una matriz de bytes en una instancia de la clase |
| DefineClass(String, ByteBuffer, ProtectionDomain) |
Convierte un |
| DefineClass(String, Byte[], Int32, Int32) |
Convierte una matriz de bytes en una instancia de la clase |
| DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
Convierte una matriz de bytes en una instancia de la clase |
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
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.
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.
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.