6

SelfComparable Interface在练习反思时,我在Collections课堂上了解到

interface java.util.Collections$SelfComparable

这个接口有什么用?

4

2 回答 2

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);

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

于 2013-09-05T10:08:55.420 回答
2

来源

private interface SelfComparable extends Comparable<SelfComparable> {}

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

它被用作:

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

第 662 行,它基本上将一个集合强制转换为Collection,然后将泛型参数强制转换为SelfComparable仅扩展的 a Comparable

于 2013-09-05T10:09:07.343 回答