为什么java中的枚举不允许使用抽象私有方法?

时间:2016-06-25 11:30:21

标签: java enums encapsulation information-hiding

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

以下是不编译的玩具代码示例;让我们假设我不想承诺任何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中找到答案。一般情况的答案在这里不适用。

0 个答案:

没有答案