Как я могу объявить перечисления с использованием Java - PullRequest
41 голосов
/ 10 августа 2011

Я хочу преобразовать этот пример кода C # в код Java:

public enum myEnum {
  ONE = "one",
  TWO = "two",
}; 

Потому что я хочу изменить этот константный класс на enum

public final class TestConstants {
    public static String ONE = "one";
    public static String TWO= "two";
}

Ответы [ 6 ]

85 голосов
/ 10 августа 2011
public enum MyEnum {
   ONE(1),
   TWO(2);
   private int value;
   private MyEnum(int value) {
      this.value = value;
   }
   public int getValue() {
      return value;
   }
}

Вкратце - вы можете определить любое количество параметров для перечисления, если вы предоставите аргументы конструктора (и установите значения для соответствующих полей)

Как отметил Скотт - Официальная документация enum дает вам ответ.Всегда начинайте с официальной документации по языковым особенностям и конструкциям.

Обновление: для строк единственное отличие состоит в том, что ваш аргумент конструктора равен String, и вы объявляете перечисления с TEST("test")

14 голосов
/ 10 августа 2011

перечисления являются классами в Java. Они имеют неявное порядковое значение, начиная с 0. Если вы хотите сохранить дополнительное поле, то вы делаете это, как и для любого другого класса:

public enum MyEnum {

    ONE(1),
    TWO(2);

    private final int value;

    private MyEnum(int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }
}
8 голосов
/ 10 августа 2011

Все просто:

/**
 * @author The Elite Gentleman
 *
 */
public enum MyEnum {
    ONE("one"), TWO("two")
    ;
    private final String value;

    private MyEnum(final String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return getValue();
    }
}

Для получения дополнительной информации посетите Перечисление типов из Oracle Java Tutorials.Кроме того, имейте в виду, что перечисления имеют приватный конструктор.


Обновление , так как вы обновили свой пост, я изменил свое значение сint до String. Похожие: Перечисление Java String .

4 голосов
/ 03 февраля 2016

Ну, в Java, вы также можете создать параметризованный enum. Допустим, вы хотите создать перечисление className, в котором вам нужно хранить classCode, а также className, вы можете сделать это следующим образом:

public enum ClassEnum {

    ONE(1, "One"), 
    TWO(2, "Two"),
    THREE(3, "Three"),
    FOUR(4, "Four"),
    FIVE(5, "Five")
    ;

    private int code;
    private String name;

    private ClassEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }

    public int getCode() {
        return code;
    }

    public String getName() {
        return name;
    }
}
4 голосов
/ 10 августа 2011
public enum MyEnum
{
    ONE(1),
    TWO(2);

    private int value;

    private MyEnum(int val){
        value = val;
    }

    public int getValue(){
        return value;
    }
}
2 голосов
/ 10 августа 2011
public enum NewEnum {
   ONE("test"),
   TWO("test");

   private String s;

   private NewEnum(String s) {
      this.s = s);
   }

    public String getS() {
        return this.s;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...