reflexión
La clase en sí es una clase.
El objeto de clase solo puede ser creado por el sistema.
Cómo se logra la reflexión
la manera | Manifestación |
---|---|
Obtener por objeto | Usuario usuario = nuevo Usuario (); Clase c1 = user.getClass () |
A través del método estático forName () de la clase Class | Class c2 = Class.forName ("com.radish.domain.User"); |
Por nombre de clase. | Clase c3 = User.class |
Demostración de código:
public stati void main(String[] args) {
// 方式一:使用对象
User user = new User();
Class c1 = user.getClass();
// 方式二:使用Class的静态方法forName()
Class c2 = Class.forName("com.radish.User");
// 方式三:使用类的.class
Class c3 = User.class;
}
Métodos de reflexión más utilizados
- Crea un objeto de instancia
- Obtener campo, atributos de campo
- Obtener método, atributo de método
- Constructor, etc.
Nombre del método | Caracteristicas |
---|---|
nueva instancia | Equivalente a usar un constructor sin parámetros nuevo un objeto |
getConstructor | Obtener el objeto constructor del objeto |
getMethods / getDeclaredMethods | Obtiene la matriz de objetos del método. El método sin Declared puede obtener los métodos de esta clase y la clase principal, pero se debe usar public. El método con Declared solo puede obtener todos los métodos de esta clase, incluidos (privado, protegido, público) |
getMethod / getDeclaredMethod | Obtenga un método especificado especificando el nombre del método, Declarado tiene el mismo efecto que el anterior |
getFields / getDeclaredFields | Obtenga el campo en la clase, devuelva una matriz archivada, la función de Declarado es la misma que la anterior |