在学习
Comparator接口的时候突然发现接口竟然可以实现,之前一直以为接口跟C++的抽象类一样不能实现的只能通过继承由其子类实现。
public class TestMain {
public static void main(String[] args) {
Comparator <String>x=new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return 0;
}
};
}
}
编译并没有报错,这其实是new了一个接口的实现类并且重写了接口中的方法,这并不是创建了接口的直接对象,还是利用多态,包括通过匿名内部类创建接口的对象也是一样的道理
public class TestMain {
public static void main(String[] args) {
List<Integer> list=new ArrayList();
list.add(1);
list.add(3);
list.add(2);
System.out.println(list);
Collections.sort(list,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
System.out.println(list);
}
}