对于不知道如何更好地陈述这个问题,我提前道歉。
在下面的程序中,如果我在 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
如果我改变线的位置: this.desc = desc; 到 myNum = a 的正上方;,然后它会运行良好。如果我把 this.desc = desc; 回到我移动它的地方(使程序与我第一次运行它的方式相同),我将不再有错误。如果我然后将“desc”变量更改为其他任何内容,我将再次收到错误,并且可以通过切换“this”行的位置来解决它,运行它没有错误,然后将它切换回来然后它'会运行良好。
我想我的问题是真的,“发生了什么事?!” 这是枚举问题吗?'这个问题?还是 NetBeans 问题?