Groovy / Grails - 如何从String获取类实例?

时间:2010-01-13 15:48:35

标签: class grails groovy

我正在尝试从string的名称派生groovy类的类实例。

例如,我想在这些方面做一些代码:

def domainName

domainName = "Patient"

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

3 个答案:

答案 0 :(得分:23)

Grails的方式是使用GrailsApplication#getArtefact。如,

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

Class.forName相反,这样做的好处是,如果没有具有该名称的域类,getArtefact只返回null而不是抛出异常。

答案 1 :(得分:2)

这将有效:

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

答案 2 :(得分:-3)

那么,

  1. 尝试使用包

  2. 实现您的代码
  3. 试试这段代码:我不知道它是否可行?

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