我正在尝试从string的名称派生groovy类的类实例。
例如,我想在这些方面做一些代码:
def domainName
domainName = "Patient"
// but following line doesn't work, domainName is a String
def domainInstance = domainName.get(1);
答案 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)
那么,
尝试使用包
试试这段代码:我不知道它是否可行?
def domainInstance = Class.forName("Patient").newInstance()