Java 隐藏枚举方法
是否可以根据枚举变量隐藏枚举方法Java 隐藏枚举方法,java,methods,enums,overriding,Java,Methods,Enums,Overriding,是否可以根据枚举变量隐藏枚举方法 enum Row1 { MainRow1() { Row2 getUpg1() { return Row2.UPGR1; } Row2 getUpg2() { return Row2 .UPGR2; } Row2 getUpg3() { throw new EmptyStackException(
enum Row1 {
MainRow1() {
Row2 getUpg1() {
return Row2.UPGR1;
}
Row2 getUpg2() {
return Row2 .UPGR2;
}
Row2 getUpg3() {
throw new EmptyStackException();
}
}, MainRow2() {
Row2 getUpg3() {
return Row2 .UPGR3;
}
};
Row2 getUpg1() { return null;}
Row2 getUpg2() { return null; }
Row2 getUpg3() {return null; }
} enum Row2{...}
在此之后,我想调用
Row1
,但如何禁用选项Row1.MainRow1.getUpg3
在Java中绝对不能这样做。枚举的所有实例都是同一类的对象;因此,让某些对象实现接口是不可能的,而让其他对象实现接口是不可能的
从理论上讲,您可以编写如下代码
public enum Whatever {
A, B;
void foo() {
if (this == A) {
throw new RuntimeException("foo() should not be called on A");
}
但那真的是个坏主意
您可能希望阅读有关该原则的内容,以了解其原因(该原则是关于类和子类的接口;但本质上,您的想法并没有太大不同)