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)