从内部类访问公共枚举

时间:2015-02-14 16:19:25

标签: java enums

我在文件enum中定义了State.java

public enum State {
  NONE, CHOOSINGMUD, PLAYING
}

我有一个公共课Server,我可以通过State.NONE访问枚举,这样就可以了。

但是,在Server内我定义了一个公共内部类,当我尝试访问State.NONE时,我得到一个cannot find symbol error

  symbol:   variable State
  location: class Server

如何在此内部类中使用State?是否有可能像我在Server课程中那样直接这样做?在我看来,它喜欢在它的父类(State)中寻找Server

这是我内部类的代码。我已将其简化,但此处的print语句将返回相同的错误:

  public class ClientConnection extends Thread
  {
   private PlayerInterface player;

   ClientConnection(PlayerInterface player) throws IOException
   {
    this.player = player;
    System.out.println(State.NONE);
   }
  }

2 个答案:

答案 0 :(得分:4)

您的State班级与没有java.lang.Thread.State字段的内部班级NONE发生冲突。将您的枚举类重命名为其他内容,您的代码将起作用

答案 1 :(得分:1)

我刚刚用它创建了一个文件

public enum State {
  on, off
}

然后是一个带有此文件的文件

public class SomeClass {
  private static class SomeInnerClass{
   State s = State.off;
    public void doSomething(State state){
      if(state == State.off){
        //do something
      }
    }
  }
}

似乎工作正常。我可以在内部类的类级别和方法中访问它。希望看到这个有帮助