首页 > 解决方案 > 在枚举类中,如何将值转换为日期?

问题描述

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

我试过了:

ENUM_OPTION1(Date(10000000000L))

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

标签: javaenums

解决方案


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() ;

推荐阅读