В классе enum как можно привести значения в виде дат? - PullRequest
0 голосов
/ 10 марта 2019

В классе enum как можно использовать значение типа java.util.date? Перечисление все еще должно иметь имя.

Я пробовал:

ENUM_OPTION1(Date(10000000000L))

Но я получил сообщение о том, что «Символ Дата (длинная) не была распознана», хотя я импортировал класс вверху моего файла.

1 Ответ

2 голосов
/ 10 марта 2019

new Date( … )

Используйте new для создания экземпляра java.util.Date.

ENUM_OPTION1( new Date( 10_000_000_000L ) ) 

К вашему сведению, java.util.Date - ужасный класс, который был вытеснен несколько лет назад классами java.time , в частности Instant.

Полный пример

Добавьте конструктор в ваше перечисление. В каждом объявленном вами экземпляре перечисления вызывайте конструктор. Этому конструктору передайте конкретную дату. См. учебник по Oracle .

public enum History {
    US_DECLARATION_OF_INDEPENDENCE( LocalDate.of( 1776 , Month.July , 4 ) ) ,
    US_CONSTITIUTION_APPROVED( LocalDate.of( 1787 , 9 , 17 ) ) 
    ;

    private LocalDate localDate ;

    // Constructor
    public History( LocalDate ld ) {
        Objects.requireNonNull( ld ) ;
        this.localDate = ld ;
    }

    // Getter
    public LocalDate getLocalDate() {
        return this.localDate ;
    }

}

Чтобы использовать это перечисление, вызовите метод экземпляра для одного из именованных константных экземпляров.

LocalDate ld = History.US_DECLARATION_OF_INDEPENDENCE.getLocalDate() ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...