在枚举中编写私有抽象方法是否完全合法?是否有理由禁止我看不到?
以下是不编译的玩具代码示例;让我们假设我不想承诺任何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"));
}
}
edit1:这并不是问为什么一般禁止私有抽象方法。我在问为什么在枚举中使用它是非法的,提供一个这样的使用有意义的例子。这不是重复的。我无法在Stackoverflow中找到答案。一般情况的答案在这里不适用。