Hi All, I hava a question...Help me..

rayoko 2006-02-04 01:00:10
Hi All!

我有一个问题,我要按照一个class的API写这个class,这个class
Implemented Interfaces:
java.lang.Comparable

其中有一个method是这样的:

public int compareTo(java.lang.Object other)

Compares this object with the specified object for order. Returns a negative, zero, or positive integer based on whether this object is less than, equal to, or greater than the specified object.

Specified by:
compareTo in interface java.lang.Comparable
Parameters:
other - the Object to compare to.
Returns:
the same return as that of compareTo(String) in String when invoked on the title of this book.

这个method应该怎么写的?我的问题在于不太明白如何在这个class里使用这个interface。我感觉好像是在这个method里使用Interface java.lang.Comparable 来compare两个string
请详细指点,谢谢。 简单说,就是我还不太明白interface是怎么回事,还有如何使用。
我的QQ 314386
MSN rayoko-com@hotmail.com
...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzhentao 2006-02-05
  • 打赏
  • 举报
回复
可能从这个角度说明接口更形象些:)

ArrayList al=new ArrayList();
Stuendt st1=new Stuendt();
Stuendt st2=new Stuendt();
al.add(st1);
al.add(st2);
Collections.sort(al);
class Student implements Compareable
{
.............
public int compareTo(Object o)
{
Student s=(Student)o;
return num > s.num ? 1 : (num==s.num ? 0 : -1);
}
}
什么时候可以排序al呢?资料上说它里面的元素需实现了compareable接口。我再这里形象的说一下:)
当Collections排序时,它把al里面的每个对象插上compare接口,相当于一个电线板(al)上的插孔(compareable)插了许多用电器(object)的插座(compareable)。然后这个电线板聪明的通过一块智能芯片(Collections.sort())把这些用电器按照功率(自定义比较大小的方法)进行了一个排序,然后它就会按从小到大顺序自动把每个插座重新插一遍,就这么简单。
所以按照这个例子来讲,compareable接口一头是collections,一头是objects。
在collections里,sun公司在compareable内部编写了一个compareable方法,希望程序员能用。在这个方法里,都是相互比较1,0,-1这些值来比较大小的。为此,sun公司又写了一个compareable接口。这样,程序员只要自己设计的类插上(实现)这个接口,就能按照自己的意愿编写compareTo这个方法(通过返回-1,0,1这些值)来达到比较的目的。
ps:虽然接口里的compareto具体方法为空,但各自的比较方案都在里面写了。student里的结果纯粹是1,-1,0,然后collections调用sort依据它内部的compareto方法(当然,比如里面肯定有什么1就是大,0就是相等之类的解释)来比较大小进行排序
rayoko 2006-02-05
  • 打赏
  • 举报
回复
interface的原理明白了,大概怎么用呢?
还有一个问题,哪里可以找到详细的javadoc的说明
racewind 2006-02-05
  • 打赏
  • 举报
回复
继承类,如果你要用类的实例对象来调用baseclass 的方法,不支持多重继承,
interface的话,不需要产生对象就可以调用,而且可以多重“继承”,前提是你必须覆写base的所有方法
pengpenglin 2006-02-04
  • 打赏
  • 举报
回复
首先你要搞清楚为什么JAVA中会出现接口这个东西,因为JAVA本身并不支持多重继承,如果一个类B继承了类A,那么类B就无法再继承类C了(当然了,前提是类A、C两者之间不存在继承关系)。
如果此时我要让类B即具有类A的功能,又想类B具有类C的功能,我要怎么办呢,最好的方法就是接口。我可以把类C换成为接口。在类B中使用extends A implement C。这样的话类B就同时具有了类A、C的功能。如果你要用继承机制的话,是无法实现的。所以用接口实现的对象可以不受个数的限制而实现多个类的功能
yczz 2006-02-04
  • 打赏
  • 举报
回复
我想这个问题很多初学JAVA的人都很困惑,我第一次看到接口时也搞不懂为什么要设计接口这个东西,它有不提供什么功能.后来用的多了就想通了,其实接口只是一个约束,它要求你实现接口中的所有方法,对程序元而言接口是个约束,比如系统分析师设计出各个类的框架,程序元要去写其中的实现,如果没有接口程序元可能会写掉一个方法或没有按要求写,这样在整合各个程序元代码时很麻烦有接口以后,程序元如果犯了错误编译器会自动发现,而且程序元也可以很安全调用其他程序元的方法,只要他实现的某个接口.对系统而言接口是个标记,在编译时系统利用这个标记做特殊处理.
gifted1982 2006-02-04
  • 打赏
  • 举报
回复
public class Employee implements Comparable {

public Employee(String n, double s, int year, int month, int day) {
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireday = calendar.getTime();
}
public int compareTo(Object otherObject) {
Employee other = (Employee) otherObject;
if (salary < other.salary) {
return -1;
}
if (salary > other.salary) {
return 1;
}
return 0;
}

private static String name;
private double salary = 100;
private static Date hireday;
}

这是我练习用的小例子,希望对你有帮助,我也是初学者

在这个method里使用Interface java.lang.Comparable 来compare两个string,不是这样的

是在你写得类中实现compareTo这个方法,借口中只有方法的定义,并没有方法的实现,
在继承他的类中要实现借口中的所有方法,否则好像要抛什么异常,学得不好,我也记不住了

62,625

社区成员

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

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