0

在枚举中编写私有抽象方法不应该是完全合法的吗?有理由禁止我看不到的吗?

下面是一个无法编译的玩具代码示例;假设我不想提交任何 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 中找不到答案。一般情况的答案在这里不适用。

4

0 回答 0