黑马程序员技术交流社区

标题: 代码疑问????? [打印本页]

作者: 一步步    时间: 2013-11-14 12:39
标题: 代码疑问?????
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)都是成对出现的吗?
请解释一下这两句代码,谢啦!


作者: 零下五度的水    时间: 2013-11-14 12:53
实现一个接口就必须重写它的所有抽象方法,所以他们必然是同时出现的
作者: linjl_ll    时间: 2013-11-14 13:11
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){};
}


作者: 一步步    时间: 2013-11-14 13:35
return  this.name.compareTo(s.name );这里的this.name与s.name分别指的是谁




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2