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

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 …

“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 comstackción que, de otro modo, realizaría el comstackdor. El método Constructor.newInstance evita este problema al ajustar cualquier excepción lanzada por el constructor en una (comprobada) InvocationTargetException .

Puedes usar la reflection Por ejemplo,

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

Pero className debe contener una ruta completa a la clase.

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.