是否可以隐藏枚举方法取决于枚举变量?
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
?
答案 0 :(得分:0)
你绝对不能用Java做到这一点。枚举的所有实例都是同一类的对象;因此,某些对象无法实现接口,而其他对象则无法实现。
理论上,你可能正在编写像
这样的代码public enum Whatever {
A, B;
void foo() {
if (this == A) {
throw new RuntimeException("foo() should not be called on A");
}
但这是一个非常糟糕的主意。
您可能希望阅读有关Liskov substitution原则的内容,以了解其原因(该原则是关于类和子类的接口;但实质上,您的想法并没有那么多不同。)