黑马程序员技术交流社区
标题:
为什么提示我未覆盖Comparable中的compareTo方法?
[打印本页]
作者:
痞子、蔚
时间:
2014-7-21 18:17
标题:
为什么提示我未覆盖Comparable中的compareTo方法?
本帖最后由 痞子、蔚 于 2014-7-21 20:21 编辑
import java.util.*;
class Student implements Comparable
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public int compareTo(Student s)
{
int num = new Integer(this.age).compareTo(new Integer(s.age));
if(num ==0)
return this.name.compareTo(s.name);
return num;
}
为什么提示我未覆盖Comparable中的compareTo方法?
作者:
韩天雷
时间:
2014-7-21 18:32
Comparable后面要加泛型
class Student implements Comparable<Student> {
private String name;
private int age;
Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int compareTo(Student s) {
int num = new Integer(this.age).compareTo(new Integer(s.age));
if (num == 0)
return this.name.compareTo(s.name);
return num;
}
}
复制代码
作者:
张慈瑞
时间:
2014-7-21 18:34
在覆盖Comparable 的compareTo()的方法的时候参数必须是Object类型的或者在实现Comparable接口的时候必须添加泛型Comparable<Student>。
作者:
wisely
时间:
2014-7-21 18:51
二楼正解,泛型不注意就挂了
作者:
wubing
时间:
2014-7-21 21:37
可以不加泛型的 但是一定要注意重写接口Comparable的方法compareTo()的时候,参数要和接口中的一模一样,否则就不是重写
Comparable接口中的方法为:public int compareTo(Object o)
而你重写的方法为:public int compareTo(Student s),此时的参数不能为Student,须为Object,而在方法中再把Object强转为Student
正确重写为:
public int compareTo(Object o)
{
Student s=(Student)o;
int num = new Integer(this.age).compareTo(new Integer(s.age));
if(num ==0)
return this.name.compareTo(s.name);
return num;
}
作者:
xwh1230
时间:
2014-7-21 22:39
嗯,常见的错误,public int compareTo(Student s)这个地方参数必须是Object o类型的,传Student过来不行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2