kco*_*ock 10 java enums interface
我有一个奇怪的问题,我不确定它是编译器问题还是我对带接口的枚举的理解.我正在使用IntelliJ IDEA 12,构建一个Android项目,我有一个这样的类:
public class ClassWithEnum {
private MyEnum myEnum;
//Trying to access it internally here throws the error
public boolean isActionable() {
return myEnum.isActionable();
}
public enum MyEnum implements Action {
ACTIONABLE() {
@Override
public boolean isActionable() { return true; }
},
NOT_ACTIONABLE() {
@Override
public boolean isActionable() { return false; }
}
}
public interface Action {
public boolean isActionable();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这是最初的工作,但现在编译器正在抱怨(我已经在一个全新的项目中尝试了这个以及相同的结果)并出现错误:
java: /Users/kcoppock/Documents/Projects/EnumInterfaceTest/src/com/example/EnumInterfaceTest/ClassWithEnum.java:11: cannot find symbol
symbol : method isActionable()
location: class com.example.EnumInterfaceTest.ClassWithEnum.MyEnum
Run Code Online (Sandbox Code Playgroud)
我之前已经完成了这个(由接口定义的行为的枚举)没有问题.有什么想法吗?
您需要自己实现isActionable()方法MyEnum.因为在isActionable()里面定义的方法ACIONABLE和NOT_ACTIONABLE它们是本地的.所以你需要全局方法MyEnum enum.
请改用此代码:
public enum MyEnum implements Action {
ACTIONABLE() {
@Override
public boolean isActionable() { return true; }
},
NOT_ACTIONABLE() {
@Override
public boolean isActionable() { return false; }
};
@Override
public boolean isActionable() { return false;}
}
Run Code Online (Sandbox Code Playgroud)