La capacidad del software para analizarse a sí mismo se conoce como reflexión. Esto lo proporciona java.lang.reflectEl paquete y los elementos en Class .Field tienen el mismo propósito que todo el mecanismo de reflexión, analizar un componente de software y describir sus capacidades dinámicamente, en tiempo de ejecución en lugar de en tiempo de compilación. Java, como muchos otros lenguajes, se tipifica estáticamente. Los mecanismos de reflexión permiten pasarlo por alto hasta cierto punto e introducir algunas características más dinámicas, como, por ejemplo, la recuperación del valor del campo por nombre. El paquete java.lang.reflect incluye varias interfaces. De especial interés es Member que define métodos que permiten obtener información sobre un campo, constructor o método de una clase. También hay diez clases en este paquete, es decir, AccessibleObject, Array, Constructor, Executable, Field, Method, Modifier, Parameter, Proxy, ReflectPermission.
La siguiente aplicación ilustra un uso simple de la reflexión de Java. Imprime los campos de la clase java.awt.Dimension . El programa comienza con el método forName() de Class para obtener un objeto de clase para java.awt.Dimension. Una vez obtenido esto, se utiliza getFields() para analizar el objeto de clase. Devuelven una array de objetos Field que proporcionan información sobre el objeto.
Método | Descripción |
---|---|
es igual a (Objeto obj ) | Este método compara este campo con el objeto especificado. |
obtener tipo anotado() | Este método devuelve un objeto AnnotatedType que representa el uso de un tipo para especificar el tipo declarado del campo representado por este campo. |
obtenerAnotación() | Este método devuelve la anotación de este elemento para el tipo especificado si dicha anotación está presente; de lo contrario, es nulo. |
obtenerAnotaciónPorTipo() | Este método devuelve anotaciones que están asociadas con este elemento. |
getBoolean(Objeto objeto) | Este método obtiene el valor de un campo booleano estático o de instancia |
getByte(Objeto objeto) | Este método obtiene el valor de un campo de bytes estático o de instancia. |
getChar(Objeto objeto) | Este método obtiene el valor de un campo estático o de instancia de tipo char o de otro tipo primitivo convertible a tipo char a través de una conversión de ampliación |
getDeclaredAnnotations() | Este método devuelve anotaciones que están directamente presentes en este elemento |
getDeclaringClass() | Este método devuelve el objeto Class que representa la clase o interfaz que declara el campo representado por este objeto Field |
getDouble(Objeto objeto) | Este método obtiene el valor de un campo estático o de instancia de tipo doble o de otro tipo primitivo convertible a tipo doble a través de una conversión de ampliación |
getFloat(Objeto obj ) | Este método obtiene el valor de un campo estático o de instancia de tipo flotante o de otro tipo primitivo convertible a tipo flotante a través de una conversión de ampliación |
getGenericType() | Este método devuelve un objeto Type que representa el tipo declarado para el campo representado por este objeto Field |
getInt(Objeto objeto) | Este método devuelve un objeto Type que representa el tipo declarado para el campo representado por este objeto Field |
obtenerLargo(Objeto objeto) | Este método obtiene el valor de un campo estático o de instancia de tipo largo o de otro tipo primitivo convertible a tipo largo a través de una conversión de ampliación |
obtenerModificadores() | Este método devuelve los modificadores del lenguaje Java para el campo representado por este objeto Field, como un número entero |
obtenerNombre() | Este método devuelve el nombre del campo representado por este objeto Field |
getShort(Objeto objeto) | Este método obtiene el valor de un campo estático o de instancia de tipo corto o de otro tipo primitivo convertible a tipo corto a través de una conversión de ampliación |
código hash() | Este método devuelve un código hash para este campo. |
esEnumConstant() | Este método devuelve verdadero si este campo representa un elemento de un tipo enumerado; devuelve falso de lo contrario |
es sintético() | Este método devuelve verdadero si este campo es un campo sintético; devuelve falso de lo contrario |
setBooleano(Objeto obj, booleano z) | Este método establece el valor de un campo como booleano en el objeto especificado |
setByte(Objeto obj, byte b) | Este método establece el valor de un campo como un byte en el objeto especificado |
setChar(Objeto obj, char c) | Este método establece el valor de un campo como un carácter en el objeto especificado |
setDouble(Objeto obj, doble d) | Este método establece el valor de un campo como un doble en el objeto especificado |
setFloat(Objeto obj, flotador f) | Este método establece el valor de un campo como flotante en el objeto especificado |
setInt(Objeto obj, int i) | Este método establece el valor de un campo como un int en el objeto especificado |
setLong(Objeto obj, largo l) | Este método establece el valor de un campo como largo en el objeto especificado |
setShort(Objeto obj, s corto) | Este método establece el valor de un campo como un corto en el objeto especificado |
aStringGenérica() | Este método devuelve una string que describe este campo, incluido su tipo genérico |
Enstringr() | Este método devuelve una string que describe este campo |
Ejemplo 1:
Java
import java.lang.reflect.Field; public class GFG { public static void main(String[] args) throws Exception { // Create the User class object User user = new User(); // Get the all field objects of User class Field[] fields = User.class.getFields(); for (int i = 0; i < fields.length; i++) { // get value of the fields Object value = fields[i].get(user); // print result System.out.println("Value of Field " + fields[i].getName() + " is " + value); } } } // sample User class class User { public static String name = "Dipsundar"; public static String getName() { return name; } public static void setName(String name) { User.name = name; } }
Value of Field name is Dipsundar
Ejemplo 2:
Java
import java.lang.reflect.Field; public class GFG { public static void main(String[] args) throws Exception { // Create the User class object User user = new User(); // Get the all field objects of User class Field[] fields = User.class.getFields(); for (int i = 0; i < fields.length; i++) { // get value of the fields Object value = fields[i].get(user); // print result System.out.println("Value of Field " + fields[i].getName() + " is " + value); } } } // sample User class class User { public static String name = "Dipsundar"; public static String getName() { return name; } public static void setName(String name) { User.name = name; } }
Value of Field booleanValue is false
Publicación traducida automáticamente
Artículo escrito por dipsundarmondal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA