繁体   English   中英

Java为什么在这个例子中使用有界通配符?

[英]Java Why use of bounded wildcards in this example?

我正在参加我的一个课程的练习考试,我遇到了一个问题,要求我实现一个静态泛型方法。 我对方法的主体是正确的,但我对实际方法签名的猜测是不同的。

我猜的:

public static <T> boolean isSorted(T[] array, Comparator<T> cmp){ ...

但是,练习考试的答案使用了这样的有界通配符:

public static <T> boolean isSorted(T[] a, Comparator<? super T> cmp)

我再次通读了javadoc,即使我知道这意味着什么( super是在你指定的类型T的类层次结构中以向上包容的方式限制),我不认为我完全理解你为什么要使用一个像这样的有界通配符。

提前致谢。

在Java中,子类应该像基类一样运行并且可能扩展行为 - 使用您提出的签名,例如,只能对仅使用IntegerComparator检查Integer数组,而不能通过处理NumberComparator检查。 此下限仅扩展了该方法的可能用例,因为它扩展了可能的Comparator对象的数量以供重用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM