我写了一个这样的程序:
import java.util.*;
class M
{
private int age;
public M(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
public String toString()
{
return "M.age="+age;
}
}
public class TreeSetSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet ts = new TreeSet(new Comparator()
{
public int compare(Object obj1, Object obj2)
{
M m1 = (M)obj1;
M m2 = (M)obj2;
return m2.getAge() - m1.getAge();
}
});
ts.add(new M(10));
ts.add(new M(8));
ts.add(new M(20));
ts.add(new M(25));
ts.add(new M(24));
System.out.println(ts);
}
}
匿名内部类,只能实现一个接口,或继承一个函数,但要实现接口的全部函数
里面的匿名内部类,并没有实现接口Comparator的全部函数接口(还有equals没实现),怎么可以编译通过呢?
本人还是java新手,多谢指教
------解决方案--------------------
所有Java类的父类Object类里已经有默认的equals实现了,所以这里不实现也不会报错。
------解决方案--------------------
equals方式是继承Object类中的默认实现!
在你的代码里,内部类只是实现了Comparator接口
因此只要实现了Comparator中的所有方法就可以了!
------解决方案--------------------
此为正解,只要处理接口里面的就可以了