带有比较器接口的“new”关键字

时间:2013-12-22 00:44:00

标签: java

我在采访中得到一个问题,即在排序泛型类的对象时(让我们说一下" Employee类的对象"其中包含变量" EmpId"" EmpName&# 34;)当我在Collection.sort()方法中使用比较器时,我需要使用" new"关键字以及比较器。我们都知道比较器是一个接口,它无法实例化。那么我们如何以及为什么使用" new"有关键字吗?当我发现这个问题非常有趣时,我想与大家分享。任何帮助表示赞赏。以下是我发布的示例代码部分: -

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;
    }
})

我的问题是我们为什么要使用&#34; new&#34;这里有关于Comparator界面的关键字?感谢

2 个答案:

答案 0 :(得分:3)

该代码不实例化接口,而是实现Comparator

的匿名类

匿名类是没有名称的本地类。使用new运算符在单个简洁表达式中定义和实例化匿名类。

Thread

获取答案

答案 1 :(得分:1)

我想你会因为我们如何创建界面对象而感到困惑 - 但这只是anonymous class正在实施

 new Comparator() { // anonymous class body    
        public int compare(emp e1, emp e2) {
            if (e1.getId > e2.getId) {
                return 1;
            }
            if (e1.getId < e2.getId) {
                return -1;
            } else
                return 0;
        }
    }