加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读