Groovy构造函数

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

解决这个问题:

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

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...