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

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.如果从非静态方法实例化内部类,则应将引用设置为此.但是,静态方法中没有这个引用.

要解决这个问题:

>从非静态方法实例化内部类>使内部类静态.然后,您可以从任何地方实例化(但是它将不再具有对外部类的实例的引用).

(编辑:李大同)

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

    推荐文章
      热点阅读