Java Jave枚举成员

Java Jave枚举成员,java,enums,scope,Java,Enums,Scope,我是Java的新手。使用此代码: public class MyClass{ enum State {STATE1, STATE2, STATE3} State curState; ... public MyClass(){ curState=STATE1; } } 我犯了一个错误 STATE1无法解析为变量 如果我将STATE1改为State.STATE1,一切正常,但我不想每次都写枚举名!我不明白为什么我必须这么做。枚举在MyClass作用域中声明

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

public class MyClass{
   enum State {STATE1, STATE2, STATE3}
   State curState;
   ...
   public MyClass(){
      curState=STATE1;
   }
}
我犯了一个错误

STATE1无法解析为变量


如果我将STATE1改为State.STATE1,一切正常,但我不想每次都写枚举名!我不明白为什么我必须这么做。枚举在MyClass作用域中声明

一种可能的解决方案是使用静态导入。例如,如果pkg包中包含上述所有内容,则:

package pkg;

import static pkg.MyClass.State.*;

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

    State curState;

    // ...
    public MyClass() {
        curState = STATE1;
    }
}
根据:

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