A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一步步 中级黑马   /  2013-11-14 12:39  /  1233 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Student implements Comparable<Student>
{
private String name;
private int ma,cn,en;
private int sum;
Student(String name,int ma,int cn,int en)
{
        this.name=name;
        this.ma=ma;
        this.cn=cn;
        this.en=en;
        sum=ma+cn+en;
}
public int compareTo(Student s)
{
int num=new Integer(this.sum).compareTo(new Integer(s.sum));
if(num==0)
        return  this.name.compareTo(s.name );
return num;
}


这段代码class Student implements Comparable<Student>与这个public int compareTo(Student s)都是成对出现的吗?
请解释一下这两句代码,谢啦!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

3 个回复

倒序浏览
实现一个接口就必须重写它的所有抽象方法,所以他们必然是同时出现的
回复 使用道具 举报
Comparable接口大致定义如下:
interface Comparable<T>{

   public int compareTo(T obj);
}
这是泛型的一种运用,compareTo中使用到了泛型,这个泛型变量在类声明中声明的,只要在定义实现类指定了这个泛型变量那么该方法中的泛型变量就是类中指定的例如下面:
class Test implements Comparable<String>{
   public int compareTo(String obj){};
}
如果定义实现类时没有指定泛型类型的话,那么使用到泛型的方法默认都是Object,这是会有一个警告
Comparable is a raw type. References to generic type Comparable<T> should be parameterized  没有指定具体的类型,你还可以看看集合中的泛型使用。
例子如下
class Test implements Comparable{
   public int compareTo(Object obj){};
}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
return  this.name.compareTo(s.name );这里的this.name与s.name分别指的是谁
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马