Groovy构造函数
发布时间:2020-12-14 16:34:31 所属栏目:大数据 来源:网络整理
导读:使用Groovy类的构造函数时,我遇到问题. 我在DataGroovy的文件中有一个Data Data类,内部有一个ContentEntry类.我想从Data方法初始化ContentEntry实例: static void initContent(nid,uid){ curContent = new ContentEntry() curContent.nid = nid; curContent
使用Groovy类的构造函数时,我遇到问题.
我在DataGroovy的文件中有一个Data Data类,内部有一个ContentEntry类.我想从Data方法初始化ContentEntry实例: static void initContent(nid,uid) { curContent = new ContentEntry() curContent.nid = nid; curContent.uid = uid; } ContentEntry定义为: class ContentEntry { public int nid,uid private tags = [:] public ContentEntry() { } ContentEntry(int nid,int uid) { this.nid = nid this.uid = uid } //omitted rest of the class 但是当运行该项目时,它会给我以下错误: Exception in thread "main" org.codehaus.groovy.runtime.metaclass.MethodSelectionException: Could not find which method <init>() to invoke from this list: public it.softit.Data$ContentEntry#<init>(it.softit.Data,int,int) public it.softit.Data$ContentEntry#<init>(it.softit.Data) 这就好像构造函数隐含地需要一个作为参数传递的外部类的实例.我想知道为什么.. 解决方法
所有(非静态)内部类都需要引用其外部类的要求是由Java强加的,而不是Groovy.如果从非静态方法实例化内部类,则应将引用设置为此.但是,静态方法中没有这个引用.
要解决这个问题: >从非静态方法实例化内部类>使内部类静态.然后,您可以从任何地方实例化(但是它将不再具有对外部类的实例的引用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |