entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Crear instancias de clase dinámicamente con Java

Conozco el nombre de una clase que tiene un constructor sin argumentos, ¿cómo puedo crear dinámicamente una instancia de la clase?

2 Respuestas

2votos

joseco48 Puntos5120

Espero haber entendido bien tu pregunta. Una forma de realizar esto puede ser la siguiente:

Object obj = Class.forName([class_name]).newInstance();

Que en un ejemplo claro podria ser

try {
    Object obj = Class.forName("java.lang.String").newInstance();
} catch (Exception ex) {
    //Hacer algo
}

Recuerda que el nombre de la clase es el paquete de la clase mas el nombre de la clase. Una manera sencilla de obtener el nombre completo de la clase es de la siguiente forma:

Nombre_Clase.class.getName()

Visto en un ejemplo:

String.class.getName()

Espero que te haya servido.
Saludos

0voto

techack comentado

simplemente es crear una clase mediante un new tal que:

Clase objeto = new Clase();

da igual que tenga o no constructor definido, el compilador de java crea uno predeterminado ya que necesita llamar al del constructor padre (java.lang.Object)

0voto

humberto_garcia_caba comentado

Eso no es cierto. Si en tu clase defines cualquier constructor distinto del constructor vacío el compilador no añade el constructor vacío. El compilador sólo añade el constructor vacío cuando en la declaración de tu clase no se ha declarado ningún constructor.

2votos

Puedes probar con un instanciador genérico, mira si te sirve éste:

public class InstanciadorGenerico<T>{
    public static T instanciar(T object){
       return (object = new T());       
    }
}

Y solamente le pasarías el objeto a instanciar.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta