作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 java.util.Collections 中,我们有以下方法签名
public static <T> void sort(List<T> list, Comparator<? super T> c)
我不明白为什么要指定
Comparator<? super T>
而不是
Comparator<T>
它涵盖哪些用例?
最佳答案
这是一个例子:
class Person {}
class Student extends Person {}
? super T
意味着?
是 T
的父类(super class)(或接口(interface)) 。也就是说,如果比较器是 Comparator<Person>
,自 Student
继承自Person
,这个比较器应该仍然可以在 Student
上工作。 .
List<Student> students = ...
Collections.sort(students, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
// compare person
return 0;
}
});
如果我们改变Comparator<? super T>
至Comparator<T>
,上面的代码将无法编译。
关于java - Collections.sort 泛型方法签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51682419/
我是一名优秀的程序员,十分优秀!