una que objetos herencia entre elementos ejemplos definicion comportamientos clases clase atributo java java-ee

que - Java cómo crear una instancia de una clase de una cadena



que es un atributo en java (3)

Compruebe la respuesta a esta pregunta: ¿Cuál es la diferencia entre "Class.forName ()" y "Class.forName (). NewInstance ()"? que explica en detalle cómo funciona todo esto.

Posible duplicado:
Crear una nueva clase a partir de una variable en Java

Tengo una cuerda

String className = "DummyClass"

Ahora quiero crear un objeto de clase donde el nombre de clase es className. Eso es algo así como

Object className = new className() // I know it''s not possible.

Quiero saber cómo hacer esto ...


Puedes usar la reflection Por ejemplo,

Object o = Class.forName(className).newInstance();

Pero className debe contener una ruta completa a la clase.


"Usar java.lang.reflect " responderá a todas sus preguntas. Primero busque el objeto Class usando Class.forName() , y luego:

Si quiero crear una instancia de una clase que forName() con forName() , primero tengo que pedirle un objeto java.lang.reflect.Constructor que represente el constructor que quiero, y luego le pido a ese Constructor que cree un nuevo objeto. El método getConstructor(Class[] parameterTypes) in Class recuperará un Constructor ; Entonces puedo usar ese Constructor llamando a su método newInstance(Object[] parameters) :

Class myClass = Class.forName("MyClass"); Class[] types = {Double.TYPE, this.getClass()}; Constructor constructor = myClass.getConstructor(types); Object[] parameters = {new Double(0), this}; Object instanceOfMyClass = constructor.newInstance(parameters);

Hay un nuevo newInstance() en la Class que podría hacer lo que quieras. No lo uses Convierte silenciosamente las excepciones comprobadas en excepciones sin marcar.

Tenga en cuenta que este método propaga cualquier excepción lanzada por el constructor nullary, incluida una excepción marcada. El uso de este método evita de manera efectiva la comprobación de excepciones en tiempo de compilación que, de otro modo, realizaría el compilador. El método Constructor.newInstance evita este problema al ajustar cualquier excepción lanzada por el constructor en una (comprobada) InvocationTargetException .