当我在比较器中使用比较器时,在我的面试中遇到了一个问题,那就是在排序泛型类的对象时(可以说“Employee类”的对象包含变量“EmpId”和“EmpName”我的Collection.sort()方法然后我需要使用“新”关键字与比较。我们都知道比较器是一个接口,它不能被实例化。那么我们如何以及为什么使用“新”关键字呢?正如我发现这个问题很有趣,我想与大家分享。任何帮助表示赞赏。这里是示例代码的部分我张贴: -带比较器接口的“新”关键字
ArrayList<Employee> emp= new ArrayLisy<Employee>();
Collection.sort(emp, new Comparator(){
public int compare(emp e1, emp e2)
{
if(e1.getId>e2.getId)
{
return 1;
}
if(e1.getId<e2.getId)
{
return -1;
}
else
return 0;
}
})
我的问题是为什么我们用在这里比较接口的“新”的关键字?由于
查找“anonymous class”。该代码声明了一个实现Comparator的未命名类,仅用于创建一个对象,sort参数。 –
@PatriciaShanahan实际上,它被命名。创建一个匿名类实例并执行'obj.getClass()。getName()',你会明白我的意思。 – Bohemian