Jave enum成员

Har*_*arb 2 java enums scope

我是Java的新手.使用此代码:

public class MyClass{
   enum State {STATE1, STATE2, STATE3}
   State curState;
   ...
   public MyClass(){
      curState=STATE1;
   }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误

STATE1无法解析为变量

如果我将STATE1变为State.STATE1一切正常,但我不想每次都写enum名称!我不明白我为什么要这样做.枚举在MyClass范围内声明.

Hov*_*els 5

一种可能的解决方案是使用静态导入.例如,如果以上所有内容都在pkg包中,那么:

package pkg;

import static pkg.MyClass.State.*;

public class MyClass {
    enum State {
        STATE1, STATE2, STATE3
    }

    State curState;

    // ...
    public MyClass() {
        curState = STATE1;
    }
}
Run Code Online (Sandbox Code Playgroud)

根据静态导入教程:

静态导入构造允许对静态成员进行非限定访问,而不从包含静态成员的类型继承.相反,程序会单独或整体导入成员.