2010-01-13 12 views
11

Estoy tratando de derivar la instancia de la clase de una clase groovy del nombre de la cadena.Groovy/Grails: cómo obtener la instancia de clase de String?

Por ejemplo, me gustaría hacer algo de código a lo largo de estas líneas:

def domainName 

domainName = "Patient" 

// but following line doesn't work, domainName is a String 
def domainInstance = domainName.get(1); 

Respuesta

22

La forma Griales sería utilizar GrailsApplication#getArtefact. por ejemplo,

def domainInstance = grailsApplication.getArtefact("Domain",domainName)?. 
     getClazz()?.get(1) 

La ventaja de hacerlo de esta manera en lugar de Class.forName es que si no hay una clase de dominio con ese nombre, getArtefact simplemente devuelve un valor nulo en lugar de lanzar una excepción.

-3

Bueno,

  1. tratar de implementar el código utilizando paquetes

  2. Prueba este código : No sé si funcionará bien?

def domainInstance = Class.forName("Patient").newInstance()

2

esto funcionará:

Class.forName("Patient", false, Thread.currentThread().contextClassLoader).get(1) 
+0

lo que estaba buscando, pero el siguiente cubre nulo. ¡Gracias de cualquier manera! –

Cuestiones relacionadas