El reflejo de la serie de finalización básica de Java

Uso básico de la reflexión.

El mecanismo de reflexión de Java está en tiempo de ejecución, para cualquier clase, puede conocer todas las propiedades y métodos de la reclasificación; para cualquier objeto, puede llamar a cualquiera de sus métodos y propiedades; puede obtenerlo por el nombre de cadena de una clase La información de esta clase se llama de acuerdo con el nombre del método. Esta función de obtener información dinámicamente y llamar dinámicamente métodos de objeto se llama mecanismo de reflexión del lenguaje Java.

El reflejo de Java es principalmente las siguientes categorías:

Nombre de la clase Efecto
Clase Una clase correspondiente a Java
Método Un método correspondiente a la clase Java.
Campo Corresponde a un campo de la clase Java.
Constructor Corresponde a un método de construcción de la clase Java.

Aquí nos fijamos en el método de adquisición de estos cuatro objetos:

//Class对象的获取
Class aClass1 = String.class;
Class aClass2 = "".getClass();
try {
    Class aClass3 = Class.forName("java.lang.String");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

Después de obtener el objeto Class, podemos obtener otros tres objetos a través del método del objeto Class:

Method[] methods = aClass1.getMethods();
Method[] methods2 = aClass1.getDeclaredMethods();

Field[] fields = aClass1.getFields();
Field[] fields2 = aClass1.getDeclaredFields();

Constructor[] constructors = aClass1.getConstructors();
Constructor[] constructors2 = aClass1.getDeclaredConstructors();

Declarado significa obtener todos los métodos de la clase actual, incluidos los métodos privados, pero no su clase principal, sin este parámetro significa obtener todos los métodos públicos de la clase, incluidos los métodos públicos de su clase principal.

Entonces podemos usar algunos métodos en estos cuatro objetos para lograr el propósito de crear objetos, invocar métodos, obtener propiedades, etc.

A continuación presentamos varios escenarios de aplicación de reflexión.

Llame al sistema métodos privados
try {
    Field field = Person.class.getDeclaredField("name");
    field.setAccessible(true);

    String name = (String) field.get(new Person("Tony",24));
    System.out.println(name);

} catch (NoSuchFieldException | IllegalAccessException e) {
    e.printStackTrace();
}

Después de obtener el objeto de reflexión correspondiente a la propiedad privada o al campo privado, podemos omitir la verificación de permisos del sistema llamando al método setAccessible para lograr el propósito de llamar al campo privado o al método privado.

La llamada de reflexión no existe en el entorno de compilación actual, pero hay clases en el entorno operativo específico

Al programar en Java, hay algunas clases que no tenemos en el entorno de compilación actual, pero existe esta clase en el entorno operativo específico, por supuesto, no podemos llamarla con el método convencional, pero podemos crear esa clase a través de la reflexión y la llamada Los métodos y campos en él se pueden usar en el desarrollo de Android si usa tecnología de middleware (usando middleware de desarrollo propio para comunicarse entre el sistema y la aplicación, y finalmente el middleware se empaquetará en el sistema). Pero la forma más común es exponer la interfaz que utilizará el cliente en el middleware y ponerla en el cliente para llamar.

发布了19 篇原创文章 · 获赞 8 · 访问量 4041

Supongo que te gusta

Origin blog.csdn.net/u014068277/article/details/102887652
Recomendado
Clasificación