gpt4 book ai didi

java - 如何修复已弃用的 .getDate()

转载 作者:行者123 更新时间:2023-12-02 09:33:34 27 4
gpt4 key购买 nike

我一直在开发一个项目,在我的私有(private)静态类 MyDateEvaluator 中,有一个已弃用的 api,即 getDate()

这是我的第一个代码:

    @Override
public boolean isInvalid(Date date) {
return date.getDay() == 0;
}

然后我尝试将其更改为 Calendar.get(Calendar.DAY_OF_MONTH),但它不起作用,并且收到一条错误消息,

MyDateEvaluator is not abstract.

    public boolean isInvalid(Calendar Calendar) {
return 0 == Calendar.get(Calendar.DAY_OF_MONTH);

}

最佳答案

java.time

我建议:

Set<DayOfWeek> invalidDays = EnumSet.of(DayOfWeek.SUNDAY);

@Override
public boolean isInvalid(Date date) {
// First convert to a modern type
ZonedDateTime zdt = date.toInstant().atZone(ZoneId.systemDefault());
DayOfWeek dow = zdt.getDayOfWeek();
return invalidDays.contains(dow);
}

如果你能避免老式的 Date 那就更好了完全上课。我假设方法签名位于您无法更改的接口(interface)或父类(super class)中。如果是这样,则该参数确实需要具有类型 Date ,我们不能用 LocalDate 代替(也不如您尝试的那样使用 Calendar )。

两者DateCalendar设计不佳且早已过时。因此,当我们得到 Date 时,我们能做的最好的事情就是是将其转换为Instant并从那里执行任何进一步的转换。我的代码依赖于 JVM 的默认时区,该时区不稳定,因为该设置可以随时更改。然而,考虑到Date的糟糕设计类我们没有办法避免这种情况。

一个比上面简单一点并且可能足够好的选项是声明 DayOfWeek invalidDay = DayOfWeek.SUNDAY;而不是使用 .equals 进行设置和比较.

关于java - 如何修复已弃用的 .getDate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57746188/

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