这两个 Java 泛型方法接受相同的数据类型吗?

JS启动器

我是 Java 新手,我正在尝试了解泛型。我试图实现一个binarySearch()Collections类中也可以找到的简单版本的方法我查找了方法签名,它是这样的:

public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) {
  // definition
}

我想知道如果您将方法定义更改为这样,上面的方法是否仍然接受相同的数据类型:

public static <T extends Comparable<? super T>> int binarySearch(List<T> list, T key) {
  // definition
}

如果不是,两者之间有什么区别?谢谢!

安迪·特纳

考虑这些类:

class A extends Comparable<A> { /* ... */ }
class B extends A { /* ... */ }

现在用这些类型定义一个键和一个列表:

A key = new B();
List<B> list = List.of(key);

您可以使用这些参数调用第一种形式,但不能调用第二种形式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章