Groovy方法来从String动态实例化一个类
发布时间:2020-12-14 16:37:47 所属栏目:大数据 来源:网络整理
导读:this question about the Groovy way to dynamically invoke a static method的答案是非常有帮助的,但我遇到以下情况的麻烦: 我定义了一个简单的Groovy类: class Item { def id = 1 def data = [ "a","b" ]} 然后我定义了一个需要动态加载Item类的简单实
this question about the Groovy way to dynamically invoke a static method的答案是非常有帮助的,但我遇到以下情况的麻烦:
我定义了一个简单的Groovy类: class Item { def id = 1 def data = [ "a","b" ] } 然后我定义了一个需要动态加载Item类的简单实用程序类: class Util { static def main(args) { def cls = "Item" as Class def instance = cls.newInstance() println instance.toString() } } Util.groovy与Item.groovy在同一个文件夹中 当我尝试运行Util.groovy我得到以下错误: Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Item' with class 'java.lang.String' to class 'java.lang.Class' due to: java.lang.ClassNotFoundException: Item at Util.main(Util.groovy:3) 我可以使它工作的唯一方法是使用groovyc来预编译Item.groovy,但是这不符合Groovy的要求:) 解决方法
这个工作,使用
underlying
GroovyClassLoader :
def instance = this.class.classLoader.loadClass( 'Item',true,false )?.newInstance() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |