Когда мы сталкиваемся с задачей создания списка заранее
предопределенных элементов, то скорее всего необходимо будет создать перечисление - в java перечисление называется enum. Например, перечислением или enum'ом может быть список состояний груза в перевозке - Доступен, В перевозке, Доставлен и Подтвержден. Для того, чтобы объекту груз можно было устанавливать в каком именно состоянии он сейчас находится, необходимо создать свой enum, в котором
будут перечислены эти состояния. В
Java 6
создавать свои энумераторы очень просто. Как это сделать я раскажу далее в этой статье.
1. Создаем простой enum
Для того, чтобы создать простой enum нужно просто перечислить его возможные значения через запятую.public enum CargoStatus { AVAILABLE, IN_TRUKING, DELIVERED, CONFIRMED; }
2. Создаем enum c полями.
Для того, чтобы элемент энумератора содержал в себе какие-то поля необходимо в энумераторе описать поля и установить их в конструкторе и описать в самом элементе. Для получения от элемента энумератора значений этих полей нужно создать соответствующие get- методы. Сначала описываем сам элемент энумератора, а в скобочках значения полей этого элемента. В конструкторе устанавливаем эти значения полям энумератора. Ниже приведен пример простого энумератора с одним полем.public enum CargoStatus { AVAILABLE("Доступен"), IN_TRUKING("В перевозке"), DELIVERED("Доставлен"), CONFIRMED("Подтверждено"); private String value; private CargoStatus(String value) { this.value = value; } public String getValue() { return value; } }
Можно сделать энумератор с несколькими полями.
public enum CargoStatus { AVAILABLE(1, "Доступен"), IN_TRUKING(2, "В перевозке"), DELIVERED(3, "Доставлен"), CONFIRMED(4, "Подтверждено"); private int id; private String value; private CargoStatus(int id, String value) { this.id = id; this.value = value; } public String getValue() { return value; } public int getId() { return id; } }
3. Пример использования созданного enum'a
Созданный нами enum будет использоваться как поле в классе Cargo (класс для сущности груз).@Cache @Entity public class Cargo extends BaseEntity { ... private String volume; private String weight; private CargoStatus status; ... }
Ниже приведен пример использования нашего энумератора - тут мы устанавливаем объекту груз поле status равным DELIVERED, то есть Доставлен.
public void completeTransportation(Long transportationId, Integer rating) { ... Cargo transportation = dao.retrieve(transportationId, false); transportation.setDeliveredDate(new Date()); transportation.setStatus(CargoStatus.DELIVERED); dao.edit(transportation); ... }
Комментариев нет:
Отправить комментарий