Tengo una clase privada (deque) que necesito para crear un objeto de, fuera de otra clase del paquete (paquete de com.example)
package com.example;
final class Deque {
public Deque() {}
}
El uso de la reflexión, ¿cómo iba a ir sobre la creación de un objeto de tipo com.example.Deque, de una clase que no está dentro del paquete de com.example?
Es complicado y por lo general no se recomienda para hacerlo, pero se pueden crear y objeto de Deque
fuera del paquete. No estoy al tanto si se puede tener una referencia adecuada del tipo deque a él sin embargo.
package com.demo;
final class NotADeque {
public NotADeque() {}
public static void main(String[] args) throws ClassNotFoundException,
NoSuchMethodException, IllegalAccessException, InvocationTargetException,
InstantiationException {
Class<?> c = Class.forName("com.example.Deque");
Constructor<?> constructor = c.getDeclaredConstructor();
constructor.setAccessible(true);//Make the constructor accessible.
Object o = constructor.newInstance();
System.out.println(o);
}
}
Esto creará una instancia de Deque
, pero con una Object
referencia a él. También se fijan en la cantidad de excepciones comprobadas que podrían ser arrojado al hacer esto, este es un enfoque muy endeble. Para más detalles visite esta pregunta