Usualmente usamos el nuevo operador para crear nuevas instancias:
Person p = new Person();
Si crea una nueva instancia por reflexión, puede llamar al método newInstance () proporcionado por Class:
Person p = Person.class.newInstance();
La limitación de llamar a Class.newInstance () es que solo puede llamar al constructor público sin parámetros de la clase.
Si el constructor tiene parámetros o no es público, no se puede llamar directamente a través de Class.newInstance ().
Para llamar a cualquier constructor, la API de reflexión de Java proporciona un objeto Constructor, que contiene toda la información de un constructor y puede crear una instancia.
El objeto constructor es muy similar al método, la única diferencia es que es un constructor y el resultado de la llamada siempre devuelve una instancia. Los ejemplos son los siguientes
public class Main {
public static void main(String[] args) throws Exception {
// 获取构造方法Integer(int):
Constructor cons1 = Integer.class.getConstructor(int.class);
// 调用构造方法:
Integer n1 = (Integer) cons1.newInstance(123);
System.out.println(n1);
// 获取构造方法Integer(String)
Constructor cons2 = Integer.class.getConstructor(String.class);
Integer n2 = (Integer) cons2.newInstance("456");
System.out.println(n2);
}
}
El método para obtener el Constructor a través de la instancia de Clase se resume de la siguiente manera:
- getConstructor (Class ...): Obtenga un constructor público; //
- getDeclaredConstructor (Class ...): obtiene un constructor;
- getConstructors (): obtiene todos los constructores públicos;
- getDeclaredConstructors (): obtiene todos los constructores.