自我比较接口在Collections Class中做了什么?

时间:2013-09-05 10:05:20

标签: java generics collections interface marker-interfaces

在练习反思的过程中,我开始了解SelfComparable Interface课程中的Collections

interface java.util.Collections$SelfComparable

此界面用于什么?

2 个答案:

答案 0 :(得分:7)

它没有做任何事情。它是私有的,因此您无法导入它。

这是一个注释,该类型是“SelfComparable”,实际上并未使用。

没有实现此接口。使用它的代码依赖于它将在运行时被丢弃的事实。

public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) {
    if (comp==null)
        return (T)max((Collection<SelfComparable>) (Collection) coll);

可能是

public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) {
    if (comp==null)
        return (T)max(/*SelfComparable*/ (Collection) coll);

因为它会在运行时被忽略。

答案 1 :(得分:2)

来自source

private interface SelfComparable extends Comparable<SelfComparable> {}

这只不过是Comparable<SelfComparable>的标记,这基本上意味着它是与self相比的可比较的标记。它的使用有些多余。

它用作:

return (T)min((Collection<SelfComparable>) (Collection) coll);

line 662上,它基本上将集合转换为Collection,然后对通用参数执行强制转换为SelfComparable,只扩展Comparable