gpt4 book ai didi

Java 为什么在此示例中使用有界通配符?

转载 作者:搜寻专家 更新时间:2023-11-01 02:08:42 25 4
gpt4 key购买 nike

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

我猜:

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只有而不是 Comparator正在研究 Number , 例如。这个下限只会扩大该方法的可能用例,因为它扩展了可能的数量 Comparator重复使用的对象。

关于Java 为什么在此示例中使用有界通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com