我知道接口(interface)不能有构造函数,我们不能创建接口(interface)的对象。
这是不可能的:
Comparator cmp = new Comparator();
我不明白如何使用关键字“new Comparator()”创建匿名内部类。这个关键字不是创建了一个 Comparator 类型的对象吗?
完整代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class DemoApp {
public static void main(String args[]) {
List<String> animals = new ArrayList<>();
animals.add("elephant");
animals.add("snake");
animals.add("lion");
animals.add("mangoose");
animals.add("cat");
animals.add("tiger");
Collections.sort(animals, new Comparator<String>() {
public int compare(String s1, String s2) {
return -s1.compareTo(s2);
}
});
displayList(animals);
}
public static void displayList(List<String> anim) {
for (String animal : anim) {
System.out.print(animal + " ");
}
System.out.println();
}
}
最佳答案
Doesn't this keyword create an object of the type Comparator?
是的,但它不会创建类 Comparator
的实例(因为 Comparator
不是类)。
它创建一个实现Comparator
接口(interface)的匿名类的实例。由于该类实例实现了 Comparator
,因此您可以说它的类型是 Comparator
。
关于java - Java 中比较器接口(interface)的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49937586/