项目构造函数中的Java Enum私有方法

GMs*_*soF 4 java enums inner-classes

public enum Parent {
    item1(1){

        public void testing() {
            add();
            multiply();
            minus(); // error here!!!
        } 

    }, item2(2);

    private int i ;
    Parent(int i){
        this.i = i;
    }

    public void setI(int i ){
        this.i = i;
    }
    public int getI(){
        return i;
    }

    public void multiply(){

    }
    protected void add(){

    }

    private void minus(){

    }
}
Run Code Online (Sandbox Code Playgroud)

正如你们所看到的那样,它们属于同一类,为什么minus()不能在内部使用?通常内部类可以private method/field在外部类中访问吗?

NPE*_*NPE 8

为了能够访问minus()来自item1,你必须让它protected(或public).

正确的方法去思考Parentitem1作为一个基类的子类.

来自JLS:

枚举常量的可选类体隐式定义了一个匿名类声明(第15.9.5节),该声明扩展了直接封闭的枚举类型.