如何在类LocalDate和LocalDateTime中使用抽象



我有以下代码:

LocalDate date;
LocalDate minDate;
//constructor...
if(date.isBefore(minDate)){
throw new RuntimeException();
}

与LocalDateTime:类似

LocalDateTime date;
LocalDateTime minDate;
//constructor...
if(date.isBefore(minDate)){
throw new RuntimeException();
}

我可以使用一些接口或抽象类吗?因为这样我就不必写两次相同的代码了?我找不到这样的接口。正如您所看到的,我只使用了"isBefore"one_answers"isAfter"方法。

这些类共享了更通用的类型,例如Temporal。但它们并不是应用程序开发人员通常要使用的

并且那些更通用的类型不共享isBefore/isAfter方法。

我认为您被这些巧合命名的方法愚弄了,以为这些日期-时间类只是彼此的变体。但事实并非如此。LocalDate实际上与LocalDateTime不同。因此,在提到DRY标签时,您实际上并没有在这里重复自己。试图抽象出只有日期和有时间的日期之间的区别是无效的。

相反,请注意LocalDate是如何实现更通用的接口ChronoLocalDate的,isBefore/isAfter方法就是从这里来的。Java中的五个类(HijrahDate、JapaneseDate、LocalDate、MinguoDate、ThaiBuddhistDate(以及ThreeTen Extra项目中的更多类共享该接口。这些类是同一种动物,用不同的方式来识别日历上的每个日期。对于这些类,将所有这些类抽象为ChronoLocalDate在逻辑上是合适的,并且(显然(对java.time框架很有用。

请注意,我并不是建议在您的应用程序中使用ChronoLocalDate。Javadoc明确警告我们不要将这种用法作为一般规则。我只是想表明,只有日期的课程"有点一样",而只有日期的和有时间的课程则不同。

即时。LocalDate和LocalDateTime都可以转换为Instant。

相关内容

  • 没有找到相关文章

最新更新