比较器既称为对象又称为接口

问题描述 投票:0回答:2

我意识到不理解这一点可能会表明我对 Java 的理解存在更深层次的问题,但是在检查 java se 文档时,它确实声明 Comparator 是一个接口。然后,当我创建“比较器”对象时,我只能这样做,因为我导入了 java.util.Comparator。

但是鉴于接口没有定义方法并且接口没有构造函数(或者它们......?),我如何实例化比较器对象?定义的方法从哪里来?

java import interface comparator
2个回答
0
投票

java.uti.Comparator 是一个接口。接口无法实例化,只能由类实现或由其他接口扩展。

如果一个类声明实现一个接口,则该接口定义的所有方法都必须出现在其源代码中,该类才能成功编译。

对于给定的 Type T(T 是需要比较的对象的类类型),与任何其他对象实例化不同,通常会实例化一个实现比较器的匿名类,而不是接口本身。这就像任何其他对象及其类型比较器一样,因此可以作为参数传递给 Collections.sort 或 Arrays.sort 方法。

 Comparator<T> c = new Comparator<T>() {
        @Override
        public int compare(T o1, T o2) {
            return 0;
        }
 };

0
投票

这里使用了Java匿名类的概念。

请参考此链接来理解这个概念: https://www.javatpoint.com/anonymous-inner-class

© www.soinside.com 2019 - 2024. All rights reserved.