TreeSet 集合 为什么我的重写接口Comparable的方法compareTo 传的参数是Object 不能改变?无法实现想要的目的

TreeSet 集合 为什么我的重写接口Comparable的方法compareTo  传的参数是Object  不能改变?无法实现想要的目的

问题描述:

package com.company;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        TreeSet<Student> treeSet = new TreeSet<>();
        Student s1 = new Student(18, "xishi");
        Student s2 = new Student(20, "wangzhaojun");
        Student s3 = new Student(22, "diaocan");
        Student s4 = new Student(23, "yanyuhuan");

        treeSet.add(s1);
        treeSet.add(s2);
        treeSet.add(s3);
        treeSet.add(s4);

        for (Student s : treeSet) {
            System.out.println(s.getName() + ":" + s.getAge());
        }
    }
}
//学生类
public class Student implements Comparable{
    public int age;
    public String name;
//........
@Override
    public int compareTo(Object o) {
        return 0;
    }
}

img

目的 是对学生对象遍历,
要求:按照年龄从大到小排序,年龄相同时按照姓名的字母进行排序
如图,我把compareTo 的参数该为Student时会报错
那这样如何实现我要的目的呢?我看到视频,为什么他的可以改,他默认的参数就是Student

使用泛型的形式,就不是object了

    class Entity implements Comparable<Entity>{
        private String id;
        private String name;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public int compareTo(Entity o) {
            return 0;
        }
    }