【发布时间】:2010-01-13 15:48:35
【问题描述】:
我正在尝试从字符串的名称派生一个 groovy 类的类实例。
例如,我想按照以下方式编写一些代码:
def domainName
domainName = "Patient"
// but following line doesn't work, domainName is a String
def domainInstance = domainName.get(1);
【问题讨论】:
我正在尝试从字符串的名称派生一个 groovy 类的类实例。
例如,我想按照以下方式编写一些代码:
def domainName
domainName = "Patient"
// but following line doesn't work, domainName is a String
def domainInstance = domainName.get(1);
【问题讨论】:
Grails 的方式是使用GrailsApplication#getArtefact。例如,
def domainInstance = grailsApplication.getArtefact("Domain",domainName)?.
getClazz()?.get(1)
与Class.forName 相比,这样做的优势在于,如果没有具有该名称的域类,getArtefact 只会返回 null 而不是引发异常。
【讨论】:
这将起作用:
Class.forName("Patient", false, Thread.currentThread().contextClassLoader).get(1)
【讨论】:
嗯,
尝试使用包来实现您的代码
试试这个代码:不知道行不行?
def domainInstance = Class.forName("Patient").newInstance()
【讨论】: