Я пытаюсь инициализировать общий класс со всеми доступными значениями из Enum. Я бы хотел, чтобы он работал:
public class MyClass<E extends Enum<E>> {
E[] choices;
public MyClass() {
choices = E.values();
}
Однако вызов в E.values
не принят в Eclipse, говоря, что этот метод undefined для этого E.
Использование этого конструктора вместо этого принято, но требует, чтобы вызывающий вызывал следующие значения:
public MyClass(E[] e) {
choices = e;
}
В документации я нашел:
Типы перечисления языка программирования Java намного мощнее, чем их коллег на других языках. Объявление enum определяет класс (называемый типом перечисления). Тело класса enum может включать методы и другие поля. Компилятор автоматически добавляет некоторые специальные методы когда он создает перечисление. Например, они имеют метод статических значений который возвращает массив, содержащий все значения перечисления в которые они объявлены.
Есть ли способ обхода этой проблемы?