elv*_*vis 7 java collections constructor interface
我知道一个接口不能有构造函数,我们不能创建接口对象.
这是不可能的:
Comparator cmp = new Comparator();
Run Code Online (Sandbox Code Playgroud)
我不明白如何使用关键字"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();
}
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 10
此关键字是否不会创建Comparator类型的对象?
是的确如此,但它不会创建一个类的实例Comparator(因为Comparator它不是一个类).
它创建一个实现Comparator接口的匿名类的实例.由于该类实例实现Comparator,您可以说它的类型是Comparator.