为什么枚举实现无法访问枚举类中的私有字段
我只是通过说如何解决编译问题来回答这个问题:
但我不明白的是,为什么首先会发生错误。
下面是编写为枚举的示例:
public enum MyEnum {
FIRST {
@Override
public String doIt() {
return "1: " + someField; //error
}
},
SECOND {
@Override
public String doIt() {
return "2: " + super.someField; //no error
}
};
private String someField;
public abstract String doIt();
}
这与抽象类完全相同
abstract class MyClass {
class FIRST extends MyClass {
@Override
public String doIt() {
return "1: " + someField; //no error
}
};
class SECOND extends MyClass {
@Override
public String doIt() {
return "2: " + super.someField; //no error
}
};
private String someField;
public abstract String doIt();
}
在实现中,它无法访问 。但是,在抽象类情况下,它可以。FIRST
enum
someField
此外,添加可以解决问题,删除字段上的修饰符也是如此。super
private
有谁知道为什么会发生这种行为上的轻微怪癖?