[英]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中,子类应该像基类一样运行并且可能扩展行为 - 使用您提出的签名,例如,只能对仅使用Integer
的Comparator
检查Integer
数组,而不能通过处理Number
的Comparator
检查。 此下限仅扩展了该方法的可能用例,因为它扩展了可能的Comparator
对象的数量以供重用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.