在枚举类中,如何将值转换为日期?

时间:2019-03-10 01:59:53

标签: java enums

在枚举类中,如何将值转换为类型java.util.date? 枚举仍然必须有一个名字。

我尝试过:

ENUM_OPTION1(Date(10000000000L))

但是我说一个错误 即使我在文件顶部导入了该类,也无法识别“符号日期(长)”。

1 个答案:

答案 0 :(得分:2)

new Date( … )

使用new实例化java.util.Date

ENUM_OPTION1( new Date( 10_000_000_000L ) ) 

FYI,java.util.Date是一个可怕的类,几年前被 java.time 类(特别是Instant)取代。

完整示例

在您的枚举上添加一个构造函数。在您声明的枚举的每个实例上,调用构造函数。向该构造函数传递特定日期。参见tutorial by 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() ;