gpt4 book ai didi

java - java类中的静态最终日期字段

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:49 26 4
gpt4 key购买 nike

我们有一个 public static util 方法,它可以解析一个字符串并返回一个 Date 对象,但它也会抛出 ParseException 以防解析的字符串无法转换为 Date 对象。

现在,在另一个类中,我希望使用上述 util 方法将静态最终日期初始化为一个值。但是鉴于 util 方法抛出 ParseException,这是不允许的。

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

public static final MY_DATE = Util.getDateFromString('20000101');

将此日期字段保持为“最终”的推荐方法是什么?

最佳答案

好吧,你可以使用静态初始化 block :

public static final Date MY_DATE;

static {
try {
MY_DATE = Util.getDateFromString("20000101");
} catch (ParseException e) {
// Whatever you want to do here. You might want to throw
// an unchecked exception, or you might want to use some fallback value.
// If you want to use a fallback value, you'd need to use a local
// variable for the result of parsing, to make sure you only have a
// single assignment to the final variable.
}
}

但是,我不建议这样做。 Date 是可变类型 - 通过 public static final 变量公开它是个坏主意。

从 Java 8 开始,java.time 包最适合用于几乎所有日期/时间工作,您可以在其中编写:

public static final LocalDate START_OF_JANUARY_2000 = LocalDate.of(2000, 1, 1);

在 Java 8 之前,我建议您使用 Joda Time它有许多不可变 日期/时间类型 - 并且是处理日期和时间的完全更好的库。看起来你想要:

public static final LocalDate START_OF_JANUARY_2000 = new LocalDate(2000, 1, 1);

请注意,即使您确实决定使用 java.util.Date,在我看来解析字符串也没有多大意义 - 你知道的数值,那么为什么不以这种方式提供它们呢?如果您没有合适的方法从年/月/日构造日期(大概应用适当的时区),那么您可以轻松地编写一个。

关于java - java类中的静态最终日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8471063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com