我是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;
    }
}


按照Static Import Tutorial


  静态导入构造允许无条件访问静态成员,而无需继承包含静态成员的类型。而是,程序单独或批量导入成员。

关于java - Java枚举成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32923643/

10-10 00:52