5 ответов:
если вы хотите, чтобы атрибуты
enumвы должны определить его так:public enum Foo { BAR (0), BAZ (1), FII (10); private final int index; Foo(int index) { this.index = index; } public int index() { return index; } }вы бы использовали его так:
public static void main(String[] args) { for (Foo f : Foo.values()) { System.out.printf("%s has index %d%n", f, f.index()); } }нужно понять, что
enum- это просто ярлык для создания класса, так что вы можете добавить все атрибуты и методы, которые вы хотите класс.если вы не хотите, чтобы определить, какие методы на ваш
enumвы можете изменить область переменных-членов и сделать ихpublic, но это не то, что они делают в пример на сайте ВС.
Если у вас есть непрерывный диапазон значений, и все, что вам нужно-это целочисленное значение, вы можете просто объявить перечислимый минимально:
public enum NUMBERZ { ZERO, ONE, TWO }и затем получить значение int следующим образом:
int numberOne = NUMBERZ.ONE.ordinal();
это:
enum Foo { Bar(0), Baz(1), Fii(10); private int index; private Foo(int index) { this.index = index; } }обратите внимание, что для получения значения перечисления из индекса,
Foo.valueOf(1)(*), не будет работать. Вам нужно сделать код самостоятельно:public Foo getFooFromIndex(int index) { switch (index) { case 0: return Foo.Bar; case 1: return Foo.Baz; case 10: return Foo.Fii; default: throw new RuntimeException("Unknown index:" + index); } }
(*): перечисление.valueOf () возвращает перечисление из строки. Таким образом, Вы можете получить строку значений с
Foo.valueOf('Bar')
звучит, как вы хотите, что-то вроде этого:
public enum Foo { Bar(0), Baz(1), Fii(10); private int number; public Foo(int number) { this.number = number; } public int getNumber() { return number; } }для начала Java Enum Tutorial было бы прекрасным местом, чтобы узнать больше.
public enum Foo { Bar(0), Baz(1), Fii(10); private final int someint; Foo(int someint) { this.someint = someint; } }в Java перечисления очень похожи на другие классы, но компилятор Java знает, чтобы относиться немного по-разному в различных ситуациях. Поэтому, если вы хотите, чтобы в них были данные, как вам кажется, вам нужно иметь переменную экземпляра для данных и соответствующий конструктор.
Comments