Jef*_*rey 1 reflection grails groovy
我知道使用Class.forName加载grails域类不起作用,但我不确定为什么会这样.我猜测有一些grails魔法发生但是理解它是什么会很好.
我最终使用了
GrailsDomainClass dc = grailsApplication.getDomainClass('mypack.myclass' )
def newDomainObject = dc.clazz.newInstance()
Run Code Online (Sandbox Code Playgroud)
但我不确定为什么只是做Class.forName('mypack.myclass')不起作用.
Grails使用自定义类加载器,因此您需要将3-arg变体与Grails使用的类加载器一起使用并注册为上下文类加载器:
Class clazz = Class.forName('mypack.myclass', true, Thread.currentThread().contextClassLoader)
def newDomainObject = clazz.newInstance()
Run Code Online (Sandbox Code Playgroud)