use*_*884 8 java generics interface java-8
今天我在jdk8源代码中发现了奇怪的代码,无法找到任何解释.
 static final Comparator<ChronoLocalDate> DATE_ORDER =
    (Comparator<ChronoLocalDate> & Serializable) (date1, date2) -> {
        return Long.compare(date1.toEpochDay(), date2.toEpochDay());
    };
任何人都可以解释为什么和Serializable出<>?
提供文档链接会很棒.
链接到源:AbstractChronology
&在该上下文中表示类型的交集。假设你有这样的课程:
interface SomeInterface
{
  public boolean isOkay();
}
enum EnumOne implements SomeInterface { ... }
enum EnumTwo implements SomeInterface { ... }
您希望能够使用任何实现 SomeInterface 的枚举作为泛型类型中的类型参数。当然,您希望能够在 Enum 和 SomeInterface 上使用方法,例如分别是compareTo和isOkay。可以这样做:
class SomeContainer<E extends Enum<E> & SomeInterface>
{
  SomeContainer(E e1, E e2)
  {
    boolean okay = e1.isOkay() && e2.isOkay();
    if (e1.compareTo(e2) != 0) { ... }
  }
}
请参阅http://docs.oracle.com/javase/specs/jls/se5.0/html/typesValues.html#4.9
| 归档时间: | 
 | 
| 查看次数: | 160 次 | 
| 最近记录: |