好吧,您可以使用静态初始化程序块:
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
是一种可变类型 - 通过公共静态最终变量公开它是一个坏主意。
从 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
,在我看来解析字符串也没有多大意义 - 您知道数值上的值,那么为什么不直接提供它们呢?如果您没有合适的方法来构建Date
年/月/日(大概应用适当的时区),那么您可以轻松编写一个。