Netbeans Java:使用';这';关键字与枚举属性结合使用会产生错误并编译精细的w/o更改。这是虫子吗?

Netbeans Java:使用';这';关键字与枚举属性结合使用会产生错误并编译精细的w/o更改。这是虫子吗?,netbeans,enums,this,Netbeans,Enums,This,我事先为不知道如何更好地陈述这个问题而道歉 在下面的程序中,如果在NetBeans中运行它,我将得到一个错误。它使用的是枚举,当我使用'this'关键字时,它似乎不喜欢它。代码: enum moreEnum{ JOHN(10,"nice"), TONY(20,"cool"); String desc; int myNum; moreEnum (int a, String desc){ myNum = a; this.desc =

我事先为不知道如何更好地陈述这个问题而道歉

在下面的程序中,如果在NetBeans中运行它,我将得到一个错误。它使用的是枚举,当我使用'this'关键字时,它似乎不喜欢它。代码:

enum moreEnum{
   JOHN(10,"nice"),
   TONY(20,"cool");

   String desc;
   int myNum;

   moreEnum (int a, String desc){  
       myNum = a;
       this.desc = desc;  
   }

   public String getDesc(){
       return desc;
   }

   public static void main (String [] args){
       System.out.printf("%s \t %s \n", moreEnum.JOHN, moreEnum.JOHN.desc);
       System.out.printf("getDesc() method - %s", moreEnum.JOHN.getDesc());
   }
}
运行时会出现以下错误:

java.lang.VerifyError: Constructor must call super() or this() before return in method moreEnum.<init>(Ljava/lang/String;ILjava/lang/String;)V at offset 0
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
    at java.lang.Class.getMethod0(Class.java:2685)
    at java.lang.Class.getMethod(Class.java:1620)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:488)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:480)
        Exception in thread "main" Java Result: 1
java.lang.VerifyError:构造函数必须调用super()或this(),然后才能在偏移量0处返回方法moreEnum。(Ljava/lang/String;ILjava/lang/String;)V
位于java.lang.Class.getDeclaredMethods0(本机方法)
位于java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
位于java.lang.Class.getMethod0(Class.java:2685)
位于java.lang.Class.getMethod(Class.java:1620)
位于sun.launcher.launchelper.getMainMethod(launchelper.java:488)
在sun.launcher.LaunchHelper.checkAndLoadMain(LaunchHelper.java:480)中
线程“main”Java结果中出现异常:1
如果我更改行的位置: this.desc=desc; 直接在myNum=a的正上方,然后它就会运行良好。如果我把this.desc=desc;回到我移动它的地方(使程序与我第一次运行它的方式相同,但没有错误),我将不再有错误。如果我随后将“desc”变量更改为其他任何变量,我将再次得到错误,并且可以通过切换“this”行的位置来解决它,无错误地运行它,然后再切换回来,它将正常运行


我想我的问题是,“到底发生了什么?!”这是一个枚举问题吗这个问题?还是NetBeans问题

这可能是Netbeans的缓存问题?不幸的是,我无法在Eclipse(JDK1.7)中重现这一点。可能在编译/运行之前尝试清理项目?

很高兴知道。我想更重要的是,在任何地方都可以使用“this”语句,因此我基本上知道这只是一个NetBeans错误,我的代码没有根本性的错误。可以接受您使用“this”的方式。这就是如何区分类成员和本地成员的方法。