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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郭孟涛 于 2013-2-18 13:32 编辑

  1. public int compareTo(Object obj)
  2.     {
  3.         return 1;
  4.         
  5.     }
复制代码
Object这里可以直接更换为传来的类名?



比如我修改为以下格式:
  1. public int compareTo(Demo de)
  2.     {
  3.         return 1;
  4.         
  5.     }
复制代码

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

6 个回复

倒序浏览
如果实现compareTo方法的类带泛型的话可以
回复 使用道具 举报
不认同楼上的观点,我测试了一下,因为compareTo()是接口Comparable中的方法,而Comparable是一个带泛型的接口,实现Comparable的类加泛型,程序会报错,因为此时限定的是compareTo()方法,而不是该方法的参数。所以一定要让Comparable接口加上泛型才可以实现更换传来的类名。
回复 使用道具 举报
本帖最后由 zhangjinyu1991 于 2013-2-18 11:33 编辑

你看哈:
public interface Comparable<T> {
      public int compareTo(T o);
}
这就是这个接口在jdk中的定义,所以要看你在继承Comparable接口时是否用了泛型,是否对泛型具体化了
回复 使用道具 举报
package com.keyee.test.heima;
class Demo
{
       
}
/*
* 朋友,Comparable接口是支持泛型的。只要你在实现该接口时指定泛型的类型时即可。
*/
public class CompareTest implements Comparable<Demo>{

        @Override
        public int compareTo(Demo o) {
                // TODO Auto-generated method stub
                return 0;
        }

}
希望我的回复对你有帮助。
回复 使用道具 举报
如果将compareTo(Object obj)改为compareTo(Demo de) 则表示你重载了compareTo方法,也就是此类中有两个compareTo方法,
一个是参数为Object类的,一个是参数为Demo类的,两个方法表示的意义不一样。
我觉得是这样,如有不对请指教。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马