例如 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>
,例如。
基本上,此处表达的差异允许在保持类型安全的同时提供更大的灵 active 。
关于java - 为什么 java 集合中的泛型如此奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4471184/