从内部 class 访问 public 枚举

Access public enum from inner class

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

public enum State {
  NONE, CHOOSINGMUD, PLAYING
}

我有一个 public class Server,我可以从中使用 State.NONE 访问枚举,这工作正常。

但是,在 Server 中,我定义了一个 public 内部 class,当我尝试在那里访问 State.NONE 时,我得到一个 cannot find symbol error :

  symbol:   variable State
  location: class Server

如何从这个内部 class 中使用 State?是否可以像我在 Server class 中那样直接这样做?在我看来它正在寻找 State 它的父 class (Server).

这是我内心的代码 class。我已经简化了它,但是这里的打印语句将 return 同样的错误:

  public class ClientConnection extends Thread
  {
   private PlayerInterface player;

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

您的 State class 与没有 NONE 字段的内部 class java.lang.Thread.State 冲突。将您的枚举 class 重命名为其他名称,您的代码将正常工作

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

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
      }
    }
  }
}

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