"main" 线程中的异常 java.lang.ClassCastException: class itheima11.student1 无法转换为 class java.lang.Comparable(itheima11.student1 位于加载器 'app' 的未命名模块中;java.lang.Comparable 位于加载器 'bootstrap' 的 java.base 模块中)
在 java.base/java.util.TreeMap.compare (TreeMap.java:1569) 处
在 java.base/java.util.TreeMap.addEntryToEmptyMap (TreeMap.java:776) 处
在 java.base/java.util.TreeMap.put (TreeMap.java:785) 处
在 java.base/java.util.TreeMap.put (TreeMap.java:534) 处
在 java.base/java.util.TreeSet.add (TreeSet.java:255) 处
当尝试将对象强制转换为不兼容类型时,会引发此错误。
这是因为将 itheima11.student1 类的对象强制转换为 java.lang.Comparable 类,但它没有实现该接口。
错误消息表明您需要在 student1 类中实现 Comparable 接口。
感悟:
当 TreeSet 集合中的元素是某个类时,这个类一定要实现 Comparable 接口,否则会报错。因为 TreeSet 只能对实现了 Comparable 接口的类对象进行排序,这是因为 Comparable 接口中有一个
compareTo(Object o)
方法用于比较两个对象的大小。