public enum Numbers{
One {
public String getDigit(){
return "1";
}
}
,
Two {
public String getDigit(){
return "2";
}
}
,
Three {
public String getDigit(){
return "3";
}
}
};
public static void main (String[] args) throws java.lang.Exception
{
Numbers xyz = Numbers.One;
System.out.println(xyz.getDigit());
}
上面的代码抛出错误:
Main.java:38: error: cannot find symbol
System.out.println(xyz.getDigit());
出现此错误的原因是什么?在每个常量的枚举中调用声明方法的正确用法是什么?
答案 0 :(得分:2)
您只在枚举常量 getDigit()
,One
和Two
上定义了方法Three
,但未在枚举{{}上定义1}}本身。
如果你想在main方法中执行Numbers
,那么你也需要在枚举类本身中使用该方法。您可以保留xyz.getNumbers()
。
在那里定义它:
abstract
当然,在你非常简单的例子中,最好在枚举public enum Numbers{
One {
@Override
public String getDigit(){
return "1";
}
},
Two {
@Override
public String getDigit(){
return "2";
}
},
Three {
@Override
public String getDigit(){
return "3";
}
};
// Define the `getDigit()` method on the level of the enum itself too!
public abstract String getDigit();
};
中完全实现它,如:
Numbers
但如果您的逻辑很复杂,那么您可以在枚举实例本身上覆盖该方法。