例如 java.util.Collections 中的检查方法

 public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

为什么我可以这样定义它:
 public static <T> int binarySearch(List<T> list, T key, Comparator<T> c)

为什么这在java中不起作用?

最佳答案

您可以这样定义它,但是这样就不会让您使用 List<Circle> 搜索 Comparator<Shape> ,例如。

基本上,这里表达的差异允许在保持类型安全的同时具有更大的灵活性。

关于java - 为什么java集合中的泛型如此奇怪?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4471184/

10-09 01:58