У меня есть 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);
}
}
Ваш класс State
противоречит внутреннему классу java.lang.Thread.State
которого нет поля NONE
. Переименуйте класс enum на что-то еще, и ваш код будет работать
Я просто создал файл с этим в нем
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
}
}
}
}
похоже, хорошо работает. Я могу получить доступ к нему на уровне внутреннего класса и в методе. Надеюсь, что это поможет