黑马程序员技术交流社区

标题: java api传值时的(Object obj)这里的Object可以更换吗 [打印本页]

作者: 郭孟涛    时间: 2013-2-18 03:47
标题: java api传值时的(Object obj)这里的Object可以更换吗
本帖最后由 郭孟涛 于 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.     }
复制代码

作者: 谢波    时间: 2013-2-18 08:13
如果实现compareTo方法的类带泛型的话可以
作者: 冯佩    时间: 2013-2-18 09:32
不认同楼上的观点,我测试了一下,因为compareTo()是接口Comparable中的方法,而Comparable是一个带泛型的接口,实现Comparable的类加泛型,程序会报错,因为此时限定的是compareTo()方法,而不是该方法的参数。所以一定要让Comparable接口加上泛型才可以实现更换传来的类名。
作者: 张晋瑜    时间: 2013-2-18 11:28
本帖最后由 zhangjinyu1991 于 2013-2-18 11:33 编辑

你看哈:
public interface Comparable<T> {
      public int compareTo(T o);
}
这就是这个接口在jdk中的定义,所以要看你在继承Comparable接口时是否用了泛型,是否对泛型具体化了

作者: 陈科宇    时间: 2013-2-18 13:57
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;
        }

}
希望我的回复对你有帮助。
作者: 寇弘禄    时间: 2013-2-18 22:57
如果将compareTo(Object obj)改为compareTo(Demo de) 则表示你重载了compareTo方法,也就是此类中有两个compareTo方法,
一个是参数为Object类的,一个是参数为Demo类的,两个方法表示的意义不一样。
我觉得是这样,如有不对请指教。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2