Доступ к общедоступному перечислению из внутреннего класса

1

У меня есть 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);
   }
  }
  • 0
    Можете ли вы опубликовать код внутреннего класса?
  • 0
    Я отправил внутренний класс, надеюсь, это поможет.
Показать ещё 2 комментария
Теги:
enums

2 ответа

4
Лучший ответ

Ваш класс State противоречит внутреннему классу java.lang.Thread.State которого нет поля NONE. Переименуйте класс enum на что-то еще, и ваш код будет работать

  • 0
    Да, я только что прокомментировал это ... хороший улов тоже
  • 1
    С ним все должно быть в порядке, если он использует абсолютный путь к перечислению, а не просто State.None. Наверное, проще, если он не намерен менять имя перечислителя
Показать ещё 6 комментариев
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
      }
    }
  }
}

похоже, хорошо работает. Я могу получить доступ к нему на уровне внутреннего класса и в методе. Надеюсь, что это поможет

  • 0
    Просто любопытно: почему создание отдельных файлов работает? Благодарю.
  • 1
    Опера уже имеет отдельные файлы, такие же, как указано выше. Я сделал то, что делает опера, просто чтобы показать, что он на самом деле должен работать, так что есть что-то еще не так.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню