Java使用Comparator

Meg*_*gan 2 java comparable comparator

我在我的类Employee中实现了Comparator和Comparable来对一个arraylist进行排序.我正在排序2参数名称和ID.使用Collections.sort(Employee ob1,Employee ob2)使用ID进行排序时,它不起作用.我得到编译错误,该类没有声明为abstact,我没有重写compare(),虽然我这样做:

public int compare(Employee ob1, Employee ob2)
{
return ob1.id-ob2.id;
}
Run Code Online (Sandbox Code Playgroud)

如果我使用它,它工作正常

public int compare(Object ob1, Object ob2)
{
return ((Employee)ob1).id-((Employee)ob2).id;
}
Run Code Online (Sandbox Code Playgroud)

我怀疑的是,为什么早期的工作不起作用,因为Employee也是一个Object.同样的问题也是compareTo(Object ob),虽然重写为什么我不能直接使用Employee,为什么我需要在那里使用Object,以后需要将它转换为Employee类.

Ell*_*sch 5

使用Object,Object的多态性会覆盖Comparator中的原始类型.使用您的类名称与该签名不匹配.对于混合签名时的编译错误,请使用模板类型.

public class Employee implements Comparator<Employee> {
  // ....
  @Override
  public int compare(Employee ob1, Employee ob2) {
    return ob1.id-ob2.id;
  }
}
Run Code Online (Sandbox Code Playgroud)