Mecanismo de reflexión de Java
El mecanismo de reflexión Java está en el estado de ejecución. El método se llama mecanismo de reflexión del lenguaje Java.
El mecanismo de reflexión Java proporciona principalmente las siguientes funciones: determinar la clase a la que cualquier objeto pertenece en tiempo de ejecución de la ejecución; un objeto;
1. Obtenga las propiedades de un objeto
La copia del código es la siguiente:
Public Object getProperty (propietario del objeto, string fieldName) lanza la excepción {
Clase OwnerClass = propietario.getClass ();
Campo campo = propietarioClass.getfield (fieldName);
Propiedad de objeto = field.get (propietario);
propiedad de devolución;
}
Clase OwnerClass = propietario.getClass (): Obtenga la clase de este objeto.
Campo campo = propietarioClass.getfield (fieldName): Obtenga el atributo declarado por la clase a través de la clase.
Propiedad del objeto = Field.get (propietario): Obtenga una instancia de esta propiedad a través del objeto.
2. Obtenga las propiedades estáticas de una clase determinada
La copia del código es la siguiente:
Objeto público getStaticProperty (string classname, string fieldName)
lanza excepción {
Class d aumberClass = class.forname (className);
Campo campo = propietarioClass.getfield (fieldName);
Propiedad de objeto = field.get (propietario);
propiedad de devolución;
}
Class d aumberClass = class.forname (className): primero obtenga la clase de esta clase.
Campo campo = dueño de dueño.
Propiedad de objeto = field.get (propietario): esto es un poco diferente de lo anterior, porque la propiedad es estática, por lo que se toma directamente de la clase de la clase.
3. Métodos para ejecutar un objeto
La copia del código es la siguiente:
Public Object Invokemethod (Object Owner, String MethodName, Object [] args) lanza la excepción {
Clase OwnerClass = propietario.getClass ();
Clase [] argsclass = nueva clase [args.length];
para (int i = 0, j = args.length; i <j; i ++) {
argsclass [i] = args [i] .getClass ();
}
Método método = propietarioClass.getMethod (MethodName, ArgsClass);
return Method.Invoke (propietario, args);
}
Clase propietario_class = propietario.getClass (): en primer lugar, debe obtener la clase de este objeto.
Líneas 5 a 9: Configure la matriz de clases de parámetros como condición para encontrar el método.
Método Método = propietario.
Method.invoke (propietario, args): los parámetros que ejecutan el método. . El valor de retorno es objeto, que también es el valor de retorno del método.
4. Ejecutar un método estático de una determinada clase
La copia del código es la siguiente:
Public Object InvokeStaticMethod (String ClassName, String MethodName,
Objeto [] args) lanza la excepción {
Class d aumberClass = class.forname (className);
Clase [] argsclass = nueva clase [args.length];
para (int i = 0, j = args.length; i <j; i ++) {
argsclass [i] = args [i] .getClass ();
}
Método método = propietarioClass.getMethod (MethodName, ArgsClass);
return Method.Invoke (NULL, Args);
}
El principio básico es el mismo que el ejemplo 3, la diferencia es la última línea.
5. Cree una nueva instancia
La copia del código es la siguiente:
Public Object NewInstance (String classname, object [] args) lanza la excepción {
Clase newoneclass = class.forname (className);
Clase [] argsclass = nueva clase [args.length];
para (int i = 0, j = args.length; i <j; i ++) {
argsclass [i] = args [i] .getClass ();
}
Constructor cons = newoneclass.getConstructor (argsclass);
devolver contras.newinstance (args);
}
El método mencionado aquí es ejecutar un constructor con parámetros para crear una nueva instancia. Si no se necesitan parámetros, puede usar directamente newoneclass.newinstance () para implementarlo.
Clase newoneclass = class.forname (className): el primer paso es que se construya la clase de la instancia.
Líneas 5 a 9: Obtenga la matriz de parámetros de clase.
Constructor Consi = newoneclass.getConstructor (ArgsClass): Get Constructor.
Cons.Newinstance (args): cree una nueva instancia.
6. Determine si es una instancia de una determinada clase
La copia del código es la siguiente:
Public boolean isinstance (object obj, clase CLS) {
regresar cls.isinstance (obj);
}
7. Obtenga un elemento en la matriz
La copia del código es la siguiente:
objeto público getByArray (Array de objetos, INT índice) {
return array.get (matriz, índice);
}