请考虑以下代码示例:
public enum MyEnum {
FIRST {
@Override
public void someMethod() {
...
}
},
SECOND {
@Override
public void someMethod() {
...
}
public void someOtherMethod() {
...
}
};
public abstract void someMethod();
}
是否可以调用 someOtherMethod()
?我尝试了 MyEnum.SECOND.someOtherMethod()
但 IDE 无法解析它。
提前致谢...
最佳答案
MyEnum.SECOND.someOtherMethod()
是非法的,因为此规则与 enum
常量上的类主体有关:
Instance methods declared in these class bodies may be invoked outside the enclosing enum type only if they override accessible methods in the enclosing enum type. [JLS §8.9.1]
因此,由于 someOtherMethod()
不会覆盖 MyEnum
方法,因此您不能在 MyEnum
之外调用它。但是,您可以在 SECOND
的主体中的某处调用它,甚至可以从其他 enum
常量之一的主体中调用它,例如 首先
,虽然我还没有尝试过,坦率地说,这会有点奇怪。
关于java - 枚举实例可以声明自己的公共(public)方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24007671/