Я ищу способы реализовать и получить доступ к моему перечислению, и я не очень доволен тем, насколько хорошо выглядит код. Это похоже на исправленный путь. Так вот что я пытаюсь сделать:Работа с <key, value> перечислениями в чистом виде
Рассмотрит это простое перечисление в качестве примера того, что я пытаюсь сделать:
public enum MyEnum {
FIRST(0L), SECOND(1L), THIRD(2L);
private Long number;
private MyEnum(Long number){
this.number= id;
}
public static boolean isFirst(MyEnum type) {
return type == FIRST;
}
public static boolean isSecond(MyEnum type) {
return type == SECOND;
}
public static boolean isThird(MyEnum type) {
return type == THIRD;
}
public Long getId() {
return number;
}
}
Позже, у меня есть некоторые объекты что я поставил в Long.valueOf (1 л), и сравнить их с этим перечисление с использованием
Long.valueOf(1L).equals(instanceOfMyEnum.getId())
Я действительно ненавижу эти жестко закодированные константы во всем моем коде так Мне было интересно, если это плохая практика, чтобы использовать что-то вроде этого, вместо:
eMyEnum.FIRST.getId().equals(instanceOfMyEnum.getId())
или
someLongThatIPassAsParameter = eMyEnum.FIRST.getId();
Это всего лишь несколько простых примеров, но в основном это та же самая проблема повторяется снова и снова. Как вы думаете?
Я не понимаю, почему 'isAnalog()' и 'isUsb()' методы ... почему они проверяют на '' SECOND' и THIRD'? Или, может быть, это просто произвольно ... Надеюсь, это не так, как в вашей программе. –
Почему вы не создаете методы, которые принимают типы перечисления и возвращают все, что хотите? – Omoro
Спасибо, Яник! Это потому, что я изменил перечисление для простоты в качестве примера, эти методы были из исходного кода, оставленные там непреднамеренно. Я отредактировал его и исправил. –