新手求教接口问题

问题描述

在学习接口的一章时,例子是使用Arrays.sort(Objecta),实现对象数组的排序,该对象所在的类必须实现Comparable<>接口,请问这个接口到底给sort方法提供了什么,为什么不可以直接在对象所属的类中定义这个接口中的方法呢??

解决方案

解决方案二:
这个接口就是用来告诉sort方法对象大小关系的,也叫自然序。有了比较的规则才能排序啊
解决方案三:
对象大小的关系不是在接口里的这个方法里咱们自己定义么,那现在我自己定义这个方法,不去implements这个接口,为什么不行?就是除了这个方法之外,这个接口还给sort方法提供了什么?
解决方案四:
引用1楼cumtwyc的回复:

这个接口就是用来告诉sort方法对象大小关系的,也叫自然序。有了比较的规则才能排序啊

对象大小的关系不是在接口里的这个方法里咱们自己定义么,那现在我自己定义这个方法,不去implements这个接口,为什么不行?就是除了这个方法之外,这个接口还给sort方法提供了什么?
解决方案五:
他就是一种默认的比较规则,在自己类中重写这个接口中的方法实现自己的规则。你如果不继承这个接口直接用Arrays.sort,他是不认compareTo方法的。因为单用这个Arrays.sort和compareTo是没有任何联系的。继承接口以后执行Arrays.sort时回调compareTo()方法,并按照自己的规则对对象数组进行排序。
解决方案六:
引用4楼liujianjun1536500976的回复:

他就是一种默认的比较规则,在自己类中重写这个接口中的方法实现自己的规则。你如果不继承这个接口直接用Arrays.sort,他是不认compareTo方法的。因为单用这个Arrays.sort和compareTo是没有任何联系的。继承接口以后执行Arrays.sort时回调compareTo()方法,并按照自己的规则对对象数组进行排序。

当然,这只是我个人的一点看法,一点理解,不周全。具体你可以查看api或其他资料.
解决方案七:
引用3楼an_kings的回复:

Quote: 引用1楼cumtwyc的回复:
这个接口就是用来告诉sort方法对象大小关系的,也叫自然序。有了比较的规则才能排序啊

对象大小的关系不是在接口里的这个方法里咱们自己定义么,那现在我自己定义这个方法,不去implements这个接口,为什么不行?就是除了这个方法之外,这个接口还给sort方法提供了什么?

接口就是用来定义一种规范的,想实现排序就必须要实现这样的接口,这不能寄希望于程序员的自觉行为,那样不利于规范化,也无法保证移植性。换句话说,没有定义接口,你怎么知道自己实现的方法的签名是什么样的呢。这就是一种规定,要从全局角度理解这个问题,不要钻牛角尖。现在不理解没事,继续往下学,到时候这些知识自然就理解了

时间: 2024-09-19 20:39:01

新手求教接口问题的相关文章

测试-Java编程风格问题,新手求教

问题描述 Java编程风格问题,新手求教 package chapter5; abstract class Goods { private double unitPrice; private int account; public double getUnitPrice() { return unitPrice; } public void setUnitPrice(double unitPrice) { this.unitPrice = unitPrice; } public int getA

事件处理-新手求教大神,java事件监听问题

问题描述 新手求教大神,java事件监听问题 import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JLabel; public class EventModelDemo implements ActionListener{ JLabel tips=new

android-Android apk为什么在别人手机上就获取不到数据,本人新手求教!!!

问题描述 Android apk为什么在别人手机上就获取不到数据,本人新手求教!!! 只能在同一个无线网下运行才能获取到数据,怎么解决,求大神指教! 解决方案 你的服务器是不是部署在内网上了,你需要部署到能通过公网ip访问,并且端口没有被限制的主机上才能在别人那里访问到. 解决方案二: 你把在内网中获得数据的机制高董了,问题在那通常也就清楚了. 解决方案三: 考虑到你访问的接口是部署在内网了,你可以问下写接口数据的 解决方案四: 接口写的问题,看看你的 地址 解决方案五: 内网问题,楼上说的有道

c#-C#集合问题,新手求教!

问题描述 C#集合问题,新手求教! namespace Ch11CardLib { class Cards:CollectionBase { public void Add(Card newCard) { List.Add(newCard); } public void Remove(Card newCard) { List.Remove(newCard); } public Card this[int cardIndex] { get { return (Card)List[cardIndex

gis开发-新手求教 现在GIS开发多用什么样的开发环境呀

问题描述 新手求教 现在GIS开发多用什么样的开发环境呀 我是个小白 以前从来没接触过什么GIS开发,导师就让我做这个,有点摸不着头脑了,求大神指点!!! 解决方案 看你做哪方面的开发了.桌面或Web用VS +AE VS+SuperMap还有移动 不太清楚 解决方案二: 用ARCGIS engine 和VS就可以,语言使用c#,关于二次开发 的书很多,可以在网上找,按照例子操作一遍熟悉下

新手求教

问题描述 新手求教:我如何打印带条码标签?如:流水码设置为VYYWW000001且不能重复.固定为0,YY为年,WW为周,并且要在数据库里记录打印的流水码数据.

c语言-小白求教接口使用(asp.net)

问题描述 小白求教接口使用(asp.net) 例如我要使用百度接口 http://api.map.baidu.com/location/ip?ak=DA01fc8690585960288eb3820c5f5bf7&ip=118.113.163.95&coor=bd09ll要怎么使用,还是什么 来着, 然后 传回来的是一串json 要怎么接受这个参数,request.from?我完全不懂 ,希望有例子,或者能讲的通俗易懂点 解决方案 http://download.csdn.net/deta

新手求教,为什么我的jsp连接mysql,跳出的网页上什么都没有,

问题描述 新手求教,为什么我的jsp连接mysql,跳出的网页上什么都没有, <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import = "java.sql.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transiti

数据库-新手求教SQL server语句 求和,多个表之间的操作

问题描述 新手求教SQL server语句 求和,多个表之间的操作 SQL求和插入,求C表更新每个OrderID的SUM_Fee,SUM_Fee对应B表每个OrderId的总和(A表的B_ID对应B表的ID,B_ID记录单个Fee)? 解决方案 SQL Server 2005 用触发器跟踪表操作 解决方案二: update C set SUM_Fee=(select SUM(orderid) from B where B.orderid=C.orderid)没看懂A表,不是太明确的需求... 解