Лучший способ создать поле уникального идентификатора для перечисления - PullRequest
2 голосов
/ 26 мая 2010

Каков наилучший способ получения уникального идентификатора из ENUM, который будет оставаться постоянным при повторном выполнении программы?

В настоящее время я делаю это вручную, передавая идентификатор в конструктор enum. Я действительно не хочу этого делать, я могу помочь.

Другой вариант - использовать статическое поле, которое увеличивается для каждого значения перечисления. Проблема в том, что если позже я решу переместить поля enum или удалить некоторые из них, это вызовет проблемы с моей программой, так как идентификатор будет сохранен в пользовательских настройках.

Идентификатор может быть любым базовым типом или строкой.

Ответы [ 3 ]

3 голосов
/ 26 мая 2010

Это может быть слишком просто, но что не так с "имя класса + имя перечисления"?

Просто добавьте этот метод в ваше перечисление:

public String getID() {
  return getClass().getName() + "." + name();
}
1 голос
/ 26 мая 2010

При создании перечисления вы можете сделать:

public enum myEnum {
    VAL1("v1"), VAL2("v2");

    private String id;

    private myEnum(String id) { this.id = id };

    public getId() { return id;}
}

Или вы можете использовать name (), которое есть у каждого перечисления, которое возвращает объявленное имя, в данном случае «VAL1» или «VAL2». Оба являются действительными способами делать то, что вы хотите. Когда вы сказали, что передали идентификатор конструктору, это то, что вы имели в виду, и если да, пожалуйста, объясните, почему это не полезно для вас.

0 голосов
/ 26 мая 2010

Имя перечисления будет оставаться постоянным. Вы не должны устанавливать другое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...