在枚举中编写私有抽象方法不应该是完全合法的吗?有理由禁止我看不到的吗?
下面是一个无法编译的玩具代码示例;假设我不想提交任何 api,除了单例是否为多个。
请注意,这可以在没有抽象方法的情况下实现,但这只是一个示例。我在问是否有禁止它的一般理由。
enum Count{
SINGLE {
private int howMany() {
return 1;
}
},
DOUBLE{
private int howMany() {
return 2;
}
};
private abstract int howMany();// !! this declaration is illegal
public boolean isMultiple(){
return this.howMany() > 1;
}
}
public static void main (String... args){
System.out.println(Arrays.toString(Count.values()));
for(Count s : Count.values()){
System.out.println(s.howMany() + " is " + (s.isMultiple() ? "many" : "one"));
}
}
编辑1:这不是问为什么通常禁止私有抽象方法。我在问为什么在枚举中使用它是非法的,并提供了一个这样的使用是有意义的例子。这不是重复的。我在 Stackoverflow 中找不到答案。一般情况的答案在这里不适用。