新手求教接口问题

金海滩 2014-12-09 04:31:33
在学习接口的一章时,例子是使用Arrays.sort(Object a),实现对象数组的排序,该对象所在的类必须实现Comparable<>接口,请问这个接口到底给sort方法提供了什么,为什么不可以直接在对象所属的类中定义这个接口中的方法呢??
...全文
142 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyc_ 2014-12-09
  • 打赏
  • 举报
回复
引用 3 楼 an_kings 的回复:
[quote=引用 1 楼 cumtwyc 的回复:] 这个接口就是用来告诉sort方法对象大小关系的,也叫自然序。有了比较的规则才能排序啊
对象大小的关系不是在接口里的这个方法里咱们自己定义么,那现在我自己定义这个方法,不去implements这个接口,为什么不行?就是除了这个方法之外,这个接口还给sort方法提供了什么?[/quote] 接口就是用来定义一种规范的,想实现排序就必须要实现这样的接口,这不能寄希望于程序员的自觉行为,那样不利于规范化,也无法保证移植性。换句话说,没有定义接口,你怎么知道自己实现的方法的签名是什么样的呢。这就是一种规定,要从全局角度理解这个问题,不要钻牛角尖。现在不理解没事,继续往下学,到时候这些知识自然就理解了
  • 打赏
  • 举报
回复
引用 4 楼 liujianjun1536500976 的回复:
他就是一种默认的比较规则,在自己类中重写这个接口中的方法实现自己的规则。你如果不继承这个接口直接用Arrays.sort,他是不认compareTo方法的。因为单用这个Arrays.sort和compareTo是没有任何联系的。继承接口以后执行Arrays.sort时回调compareTo()方法,并按照自己的规则对对象数组进行排序。
当然,这只是我个人的一点看法,一点理解,不周全。具体你可以查看api或其他资料.
  • 打赏
  • 举报
回复
他就是一种默认的比较规则,在自己类中重写这个接口中的方法实现自己的规则。你如果不继承这个接口直接用Arrays.sort,他是不认compareTo方法的。因为单用这个Arrays.sort和compareTo是没有任何联系的。继承接口以后执行Arrays.sort时回调compareTo()方法,并按照自己的规则对对象数组进行排序。
金海滩 2014-12-09
  • 打赏
  • 举报
回复
引用 1 楼 cumtwyc 的回复:
这个接口就是用来告诉sort方法对象大小关系的,也叫自然序。有了比较的规则才能排序啊
对象大小的关系不是在接口里的这个方法里咱们自己定义么,那现在我自己定义这个方法,不去implements这个接口,为什么不行?就是除了这个方法之外,这个接口还给sort方法提供了什么?
金海滩 2014-12-09
  • 打赏
  • 举报
回复
对象大小的关系不是在接口里的这个方法里咱们自己定义么,那现在我自己定义这个方法,不去implements这个接口,为什么不行?就是除了这个方法之外,这个接口还给sort方法提供了什么?
wyc_ 2014-12-09
  • 打赏
  • 举报
回复
这个接口就是用来告诉sort方法对象大小关系的,也叫自然序。有了比较的规则才能排序啊

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧