我是Java的新手。使用此代码:
public class MyClass{
enum State {STATE1, STATE2, STATE3}
State curState;
...
public MyClass(){
curState=STATE1;
}
}
我收到错误
STATE1无法解析为变量
如果我将STATE1变为State.STATE1,一切正常,但我不想每次都写enum名称!我不明白我为什么要这样做。枚举在MyClass范围内声明。
答案 0 :(得分:5)
一种可能的解决方案是使用静态导入。例如,如果以上所有内容都在pkg包中,那么:
package pkg;
import static pkg.MyClass.State.*;
public class MyClass {
enum State {
STATE1, STATE2, STATE3
}
State curState;
// ...
public MyClass() {
curState = STATE1;
}
}
静态导入构造允许对静态成员进行非限定访问,而不从包含静态成员的类型继承。相反,程序会单独或整体导入成员。