Crear una instancia utilizando el nombre de la clase y llamando al constructor
¿Existe una manera de crear una instancia de una clase particular dado el nombre de la clase (dinámica) y pasar parámetros a su constructor.
Algo así como
Object object = createInstance("mypackage.MyClass","MyAttributeValue");
Donde "MiAtributoValor"es un argumento del constructor de
MiClase`.
298
3
Sí, algo así:
Eso sólo funcionará para un único parámetro de cadena, por supuesto, pero puedes modificarlo con bastante facilidad.
Tenga en cuenta que el nombre de la clase tiene que ser completamente calificado, es decir, incluyendo el espacio de nombres. Para las clases anidadas, es necesario utilizar un dólar (ya que es lo que utiliza el compilador). Por ejemplo:
Para obtener el objeto
Class
para eso, usted'necesitaríaClass.forName("foo.Outer$Nested")
.Puede utilizar
Class.forName()
para obtener un objetoClass
de la clase deseada.A continuación, utilice
getConstructor()
para encontrar el objetoConstructor
deseado.Finalmente, llama a
newInstance()
sobre ese objeto para obtener tu nueva instancia.Puedes utilizar los reflejos