java - 为什么 java 集合中的泛型如此奇怪?

标签 java generics compiler-construction

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

相关文章:

java - "Unknown column"在 AS400 db2 上使用 JPA

c# - 为什么我不能从通用对象运行以下方法?

c++ - _iterator_debug_level 值 '0' 与值 '2' 不匹配

java - 同时编译10000个java项目

java - 使用 play-scalr 会引发不支持的 Major.minor 版本 51.0

java - 无法加载 JDBC 领域的组

java - 检查按钮的 ID

c++ - 在类模板外部或内部定义的结构

c# - 转换为通用基类失败

c - C-- 与 LLVM 相比如何?