【发布时间】:2014-08-04 21:39:45
【问题描述】:
今天在jdk8源码中发现了奇怪的代码,找不到任何解释。
static final Comparator<ChronoLocalDate> DATE_ORDER =
(Comparator<ChronoLocalDate> & Serializable) (date1, date2) -> {
return Long.compare(date1.toEpochDay(), date2.toEpochDay());
};
谁能解释我为什么 & Serializable out of <> ?
提供文档链接会很棒。
来源链接:AbstractChronology
【问题讨论】:
-
非常感谢!现在我明白了。
-
值得注意的是,强烈建议不要使用可序列化的 lambda,因为序列化形式高度依赖于包含类的二进制形式,甚至使用不同的编译器(或它的不同版本)进行编译可能打破兼容性。特别是在这个问题的例子中,
DATE_ORDER似乎是一个单例,一个(反)序列化的 lambda 不会保留的属性。
标签: java generics interface java-8