如何使用 类 LocalDate 和 LocalDateTime 的抽象?
How to use abstraction with classes LocalDate and 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();
}
我可以使用一些接口或抽象 class 吗?这样我就不必将相同的代码写两次了?我找不到这样的界面。
如您所见,我仅使用 'isBefore' 和 'isAfter' 方法。
即时。
LocalDate 和 LocalDateTime 都可以转换为 Instant。
这些 类 共享的通用类型较多,例如 Temporal
。但它们不是一般由应用程序开发人员使用。
而那些更通用的类型不共享 isBefore
/isAfter
方法。
我认为您被巧合命名的方法所愚弄,以为这些日期时间 类 只是彼此的变体。但他们不是。 LocalDate
与 LocalDateTime
确实是不同的动物。因此,关于您的 DRY 标签,您实际上并没有在这里重复自己。试图抽象出仅日期和带时间的日期之间的区别是无效的。
相比之下,请注意 LocalDate
如何实现更通用的接口 ChronoLocalDate
,其中 isBefore
/isAfter
方法来自哪里。该界面由 Java 中的五个 类 共享(HijrahDate、JapaneseDate、LocalDate、MinguoDate、ThaiBuddhistDate),甚至 ThreeTen-Extra[=35= 中的更多 类 ] 项目。那些 类 是同一种动物,不同的方式来识别日历上的每个日期。对于这些 类 将所有这些 类 抽象为 ChronoLocalDate
在逻辑上是合适的,并且(显然)对 java.time 框架有用。
请注意,我并不是建议在您的应用中使用 ChronoLocalDate
。 Javadoc 清楚地警告我们不要将这种用法作为一般规则。我只是想证明仅日期 类 是“有点相同”,而仅日期和带时间的日期 类 不是。
我有以下代码:
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();
}
我可以使用一些接口或抽象 class 吗?这样我就不必将相同的代码写两次了?我找不到这样的界面。 如您所见,我仅使用 'isBefore' 和 'isAfter' 方法。
即时。 LocalDate 和 LocalDateTime 都可以转换为 Instant。
这些 类 共享的通用类型较多,例如 Temporal
。但它们不是一般由应用程序开发人员使用。
而那些更通用的类型不共享 isBefore
/isAfter
方法。
我认为您被巧合命名的方法所愚弄,以为这些日期时间 类 只是彼此的变体。但他们不是。 LocalDate
与 LocalDateTime
确实是不同的动物。因此,关于您的 DRY 标签,您实际上并没有在这里重复自己。试图抽象出仅日期和带时间的日期之间的区别是无效的。
相比之下,请注意 LocalDate
如何实现更通用的接口 ChronoLocalDate
,其中 isBefore
/isAfter
方法来自哪里。该界面由 Java 中的五个 类 共享(HijrahDate、JapaneseDate、LocalDate、MinguoDate、ThaiBuddhistDate),甚至 ThreeTen-Extra[=35= 中的更多 类 ] 项目。那些 类 是同一种动物,不同的方式来识别日历上的每个日期。对于这些 类 将所有这些 类 抽象为 ChronoLocalDate
在逻辑上是合适的,并且(显然)对 java.time 框架有用。
请注意,我并不是建议在您的应用中使用 ChronoLocalDate
。 Javadoc 清楚地警告我们不要将这种用法作为一般规则。我只是想证明仅日期 类 是“有点相同”,而仅日期和带时间的日期 类 不是。