【发布时间】:2016-01-17 18:47:41
【问题描述】:
我知道使用 Java 8 的 default 关键字添加了一堆带主体的方法。我的问题是这个注释在哪里有用?我看到只有一个抽象方法允许添加这样的注释。但是 Comparator 有两个抽象方法:
int compare(T o1, T o2);boolean equals(Object obj);
另外,请解释一下这个注解的用途?我看到它是一个运行时注解,那么它的用途是什么?
【问题讨论】:
-
@coolguy:区别在于
Comparator实际上声明了equals,但没有声明hashCode。所以equals是接口定义的一部分,列在JavaDoc等中;hashCode不是,虽然Comparator的实现当然会从Object继承并得到它。 -
声明equals方法的意义何在?他们本可以像哈希码方法一样离开它吗?
-
@user2296988 可能的原因之一是在 Comparator 的上下文中提供该方法的更具体的文档。可能类似于“为什么ArrayList已经扩展了AbstractList,为什么还要实现List?”。