黑马程序员技术交流社区

标题: 明明实现了compareTo方法,为什么报错说没有实现呢 [打印本页]

作者: 何羡玉    时间: 2013-4-24 21:27
标题: 明明实现了compareTo方法,为什么报错说没有实现呢
本帖最后由 何羡玉 于 2013-4-25 09:20 编辑

到底哪里错了啊

G0RUVM~5P%5U0OYA`[IAT}U.jpg (43.63 KB, 下载次数: 31)

G0RUVM~5P%5U0OYA`[IAT}U.jpg

作者: 范鹏飞    时间: 2013-4-24 21:37
  1. class Student implements Comparable<Student> {
  2.         private String name;
  3.         private int age;
  4.         Student (String name, int age) {
  5.                 this.name = name;
  6.                 this.age = age;
  7.         }
  8.         public String getName() {
  9.                 return name;
  10.         }
  11.         public void setName(String name) {
  12.                 this.name = name;
  13.         }
  14.         public int getAge() {
  15.                 return age;
  16.         }
  17.         public void setAge(int age) {
  18.                 this.age = age;
  19.         }
  20.         @Override
  21.         public int compareTo(Student o) {
  22.                 // TODO Auto-generated method stub
  23.                 return 0;
  24.         }
  25.        
  26. }
复制代码
Comparable<>后面要加泛型的, 这是jdk1.5后的新特性
作者: 殇_心。    时间: 2013-4-24 21:38
本帖最后由 殇_心。 于 2013-4-24 21:40 编辑

大概是没复写compareTo方法。你的参数必须是Object。
或者楼上那样。泛型。
作者: 刘胜寒    时间: 2013-4-24 21:38
本帖最后由 刘胜寒 于 2013-4-24 21:39 编辑

.................受教了..
作者: 何羡玉    时间: 2013-4-24 21:40
刘胜寒 发表于 2013-4-24 21:38
.................受教了..

小寒哥 你存在的意义就是专门鄙视我的吧
作者: 袁梦希    时间: 2013-4-24 21:48
本帖最后由 袁梦希 于 2013-4-24 21:51 编辑

楼主你好:
1.因为这道题你想让Student对象具备比较性,所以实现了Comparable接口,同时用该覆盖compareTo方法,
   覆盖的时候因为你不知道会传进来什么类型,所以我们传一个object类型的对象,当你对对象进行操作的时候,必须强制转型。
2.如果你想固定住类型,硬传Student对象类型,那么必须在Comparable接口后面加一个泛型,如:Comparable<Student>

代码如下:
  1. class Student implements Comparable<Student> {//让学生对象具备比较性
  2.         private String name;
  3.         private int age;
  4.         Student (String name, int age) {
  5.                 this.name = name;
  6.                 this.age = age;
  7.         }
  8.         public String getName() {
  9.                 return name;
  10.         }
  11.         public void setName(String name) {
  12.                 this.name = name;
  13.         }
  14.         public int getAge() {
  15.                 return age;
  16.         }
  17.         public void setAge(int age) {
  18.                 this.age = age;
  19.         }
  20.         @Override
  21.         public int compareTo(Student s) {//传一个学生对象
  22.                 // TODO Auto-generated method stub
  23.                 return 0;
  24.         }
复制代码

作者: 刘胜寒    时间: 2013-4-24 21:49
何羡玉 发表于 2013-4-24 21:40
小寒哥 你存在的意义就是专门鄙视我的吧

我是发自肺腑的受教了...
骗你让怀化在阴天一个月
作者: wangyougu010    时间: 2013-4-24 21:53
import java.util.Set;
import java.util.TreeSet;


public class Test {
        public static void main(String[] args) {
                Set<Student> set = new TreeSet<Student>();
                set.add(new Student("1",21));
                set.add(new Student("2",22));
                System.out.println(set);
        }
}
class Student implements Comparable<Student> {
        private String name;
        private int age;
       
        Student(String name,int age) {
                this.name = name;
                this.age = age;
        }
        public Student(String string) {
                // TODO Auto-generated constructor stub
        }
        public String getName() {
                return name;
        }
        public int getAge() {
                return age;
        }
        @Override
        public String toString() {
                return "Student [name=" + name + ", age=" + age + "]";
        }
       
        public int compareTo(Student stu) {
                return stu.getAge() - this.getAge();
        }
}
你的代买没写全,看看这个,没问题的,希望能帮到您
作者: 何羡玉    时间: 2013-4-24 21:56
本帖最后由 何羡玉 于 2013-4-24 22:00 编辑


{:soso_e100:}

Q0}M{IVB7YQ[@RQW5%3S@GQ.jpg (37.15 KB, 下载次数: 20)

Q0}M{IVB7YQ[@RQW5%3S@GQ.jpg

作者: 殇_心。    时间: 2013-4-24 22:31
何羡玉 发表于 2013-4-24 21:40
小寒哥 你存在的意义就是专门鄙视我的吧

嘿嘿。  你认识我不?```
猜猜哦```




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