同时查看一个简单的Comparator用法示例:
Comparator<Developer> byName = new Comparator<Developer>() {
@Override
public int compare(Developer o1, Developer o2) {
return o1.getName().compareTo(o2.getName());
}
我无法理解这种方法声明,我之前从未见过这样的事情。
此外,我还尝试做其他事情: 我创建了一个具有实现Comparator的内部类的类:
class Test{
class A implements Comparator<Integer> {
@Override
public int compare(int a, int b) {
// Do something
}
}
class B implements Comparator<Integer> {
@Override
public int compare(int a, int b) {
return a > b ? 1 :A.compare(a, b);
}
}
}
A.compare(a,b)没有编译。它要求我制作A并比较静态但我不会覆盖比较器类的方法比较。
另外,我想在另一个类
中使用方法A.class C {
private int foo(){
Test.A()
}
}
它也不起作用 我该怎么做呢? 有什么建议吗?
答案 0 :(得分:2)
当您使用Comparator<Something>
时,您使用的是参数化类型(在这种情况下:Something
)。
compare
的方法签名需要与此类型匹配。
所以,试试:
public int compare(Integer a, Integer b)