Java可以new一个接口吗?

先说结论:接口、抽象类是不可以被new的。

但是今天在写外部比较器Comparator时,我发现有这种写法

// 使用comparator比较器接口
    Comparator comparator = new Comparator(){
        public int compare(Object o1, Object o2) {
            if (o1 instanceof orderNode && o2 instanceof orderNode) {
                orderNode a1 = (orderNode) o1;
                orderNode a2 = (orderNode) o2;
                return a1.val - a2.val;
            }
            return 0;
        }
    };

这不就是new一个接口了吗?

但是注意,后面还有大括号,这相当于一个实现了接口的匿名类,我们需要在其内部{}内把接口的方法实现。

 

posted @ 2021-07-01 11:30  Peterxiazhen  阅读(1340)  评论(0编辑  收藏  举报