永发信息网

为什么compareTo()的参数要是java.lang.Object类型

答案:3  悬赏:70  手机版
解决时间 2021-01-28 15:10
  • 提问者网友:容嬷嬷拿针来
  • 2021-01-28 01:18
java初学中,用到一个代码质量检查工具中有一个检测器是这样定义的:
Abstract class defines covariant compareTo() method

This class defines a covariant version of compareTo(). To correctly override the compareTo() method in the Comparable interface, the parameter of compareTo() must have type java.lang.Object.

请问这个检测器是什么意思?为何要这样要求?

该工具是为了找出代码中潜在的缺陷,而Abstract class defines covariant compareTo() method是它的一个检测器,属于“不好的实践”类型。所以我理解是不是说Abstract class中最好不要定义可变的compareTo()方法?那么怎样的是可变的怎样的是不可变的?为什么不要定义可变的compareTo()方法?
最佳答案
  • 五星知识达人网友:你哪知我潦倒为你
  • 2021-01-28 02:08
因为这是一个通用的接口,所以定义方法时是比较当前对象与待比较对象是否相等,由于该通用接口不可能知道你要比较的具体对象类型,所以这里需要的一个参数类型是Object。
在java5.0有泛型之后,你编写代码的时候可以在实现该接口时指定要比较的具体的类型。
-------------------------------------
你是怎么把它理解成不对的。。。
这句英文的意思是该类定义了一个通用的、可变的或者说是可扩展的compareTo()方法。子类想要正确地实现这个接口,就必须覆盖compareTo方法,并且传递的参数必须是Object。
-------------------------------------
你把你报错的那段代码放上来看看。
这个可变的应该就是参数定义上,如果用了泛型之后应该就算是不可变的了。
全部回答
  • 1楼网友:琴狂剑也妄
  • 2021-01-28 04:00

http://www.javaeye.com/topic/483469

你去看看 应该就明白了 

说的比较好!

  • 2楼网友:duile
  • 2021-01-28 03:35
查api文档你就知道了 所有类都把java.lang.object作为父类 换句话说 java中的所有类都直接或间接地继承自object类
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯