JAVA_SE_ notas de acabado (reflexión)

Reflex mecanismo

1 , reflexión general:

mecanismo de reflexión JAVA está en el estado operativo, para cualquier clase, se dan a conocer a todas las propiedades y métodos de esta clase; para cualquier objeto, son capaces de llamar a cualquiera de sus métodos y propiedades; esta información adquirida dinámicamente y la invocación dinámica un método de la función objeto llamado reflexión lenguaje java mecanismo.

Para Anatomía de una clase, primero debe llegar a la clase de objeto archivo de código de bytes. Clase es el método utilizado por la clase de anatomía, por lo que cada objeto debe obtener primero el archivo de clase correspondiente tipo de código de bytes.

Obtiene el objeto Class de tres maneras:

1, Persona p = new Persona ();

  Clase c = p.getClass ();

2, Clase c2 = Person.class; // tipo de datos arbitrarios incluye un atributo de clase estática, simplemente se ve mejor que la primera forma de realización.

3, la clase C3 = Class.forName ( "Persona"); // cadena debe ser una clase en la ruta completa

// nombre de la clase pasa como una cadena a un método estático puede forName clase Clase

El análisis de la diferencia entre el tercer y el primer dos: el
dos primer lugar hay que explícitamente tipo de persona.

Esta última sólo necesita conocer el tipo de cadena, más escalable. Cargarlo en el archivo de configuración.

2 , por lo que refleja la obtención y utilizando el constructor

La primera manera de conseguir el objeto:

Class - newInstance (); // crear este objeto de clase representa una nueva instancia de la clase, el objeto es nuevo por el constructor sin argumentos. Limitaciones, no pueden utilizar la configuración de múltiples parámetros.

La segunda manera de llegar es en referencia puede ser :( objetos se construyeron nuevo)

Constructor --public T newInstance (Object ... initargs) // crear un objeto con una estructura correspondiente a la referencia

pública Constructor <?> [] getConstructors () // obtener todos los constructores públicos

pública Constructor <?> [] getDeclaredConstructors () // obtener todos los constructores

pública Constructor <T> getConstructor (Clase <?> ... parameterTypes) // Obtiene el constructor especificado

Parámetros, tipos de parámetros, constructor de la clase

pública Constructor <T> getDeclaredConstructor (Clase <?> ... parameterTypes) // Obtiene el constructor (constructor puede ser cualquier autoridad)

setAccessible public void (boolean flag) // establecer permisos ignorado, olvidado de tomar la estructura no necesita ningún permiso, pero el permiso para utilizar el constructor necesita ser ignorada

3 , por lo que refleja la adquisición de la propiedad y el uso

La adquisición de la propiedad:

Campo público [] getFields () // obtener toda la propiedad pública (de campo, variables miembro)

Campo público [] getDeclaredFields () // obtener todas las propiedades

El campo getField pública (String nombre) // Obtiene la propiedad pública especificada

El campo getDeclaredField pública (String nombre) // Obtiene los atributos de objeto especifica el nombre de la propiedad

Usar atributos:

Campo conjunto --public void (Object obj, del valor del objeto) // valores de ajuste para el sujeto

El primer parámetro: objeto, el segundo parámetro es el valor.

4 , reflejada por el método para la obtención y el uso de

Método de adquisición:

getMethods método de adquisición incluye todos los métodos públicos heredados

método de adquisición getDeclaredMethods no contiene todos los métodos heredados

getMethod obtener el método pública especificada

getDeclaredMethod Obtiene el método especificado

acceso obligatorio, métodos privados method.setAccessible (true);

Modo de empleo:

invoke (Object obj, objeto ... args)

 

Supongo que te gusta

Origin www.cnblogs.com/songliuzhan/p/12624156.html
Recomendado
Clasificación