静态final java类中的Date字段

Ram*_*esh 3 java java.util.date

我们有一个公共静态util方法,它可以解析一个字符串并返回一个Date对象,但是如果解析的字符串无法转换为Date对象,它也会抛出ParseException.

现在,在另一个类中,我希望使用上面描述的util方法将静态最终Date初始化为一个值.但是假设util方法抛出ParseException,则不允许这样做.

这是我想要做的,这是不允许的

public static final MY_DATE = Util.getDateFromString('20000101');
Run Code Online (Sandbox Code Playgroud)

保持此日期字段"最终"的建议方法是什么?

Jon*_*eet 8

那么你可以使用静态初始化块:

public static final Date MY_DATE;

static {
    try {
       MY_DATE = Util.getDateFromString("20000101");
    } catch (ParseException e) {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我会建议不要这样做.Date是一个可变类型 - 通过公共静态最终变量公开它是一个坏主意.

相反,我建议您使用具有许多不可变日期/时间类型的Joda Time - 并且是处理日期和时间的完全更好的库.看起来你想要:

public static final LocalDate START_OF_JANUARY_2000 = new LocalDate(2000, 1, 1);
Run Code Online (Sandbox Code Playgroud)

请注意,即使你决定使用java.util.Date,它并没有多大意义,解析字符串在我看来-你知道的数值的数值,那么,为什么不只是提供他们的方式?如果你没有一个合适的方法来构建Date一年/月/日(大概应用适当的时区),那么你可以很容易地写一个.