A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

匿名内部类是不是要重写接口的所有抽象方法?拿这个怎么解释呢?
创建一个TreeSet集合:
TreeSet<Integer> ts = new TreeSet<Integer>(new Comparator<Integer>() {
        public int compare(Integer s1,Integer s2) {
                int num = s2 - s1;
                return num > 0 ? 1 : num;
        }
});

查API  Comparator类里有两个抽象方法,却只重写了一个

public interface Comparator<T> {

    int compare(T o1, T o2);

    boolean equals(Object obj);



求大神解释解释呗.....

3 个回复

倒序浏览
因为新建的匿名内部类里面 默认继承了Object的equals方法 。

看上去是没有重写,其实默认是有的

另外再想想,还有哪些方法也是可以从Object类继承的。以后看见就知道了
回复 使用道具 举报
pdog 发表于 2016-9-24 23:51
因为新建的匿名内部类里面 默认继承了Object的equals方法 。

看上去是没有重写,其实默认是有的

嗯嗯  谢谢层主,有点理解了
回复 使用道具 举报
匿名内部类继承Object,里面自带equals方法,相当于重写了接口里的equals方法,同理,如果一个类实现多个接口,这些接口里又有相同的方法的话,只用重写一次就行了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马