例如 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/