"
程序运行返回Exception in thread "main" java.lang.ClassCastException: Item cannot be cast to java.lang.Comparable.
求各位大哥大叔帮看看哪里出了问题。。。。
public class LinkListTest {
public static void main(String[] args) { SortedSet<Item> oo = new TreeSet<>(); oo.add(new Item("afang", 1011)); oo.add(new Item("fangjie", 1222)); oo.add(new Item("fangfang", 889)); System.out.println(oo);
SortedSet<Item> sortedByDes = new TreeSet<>(new
Comparator<Item>() {
public int compare(Item a, Item b) {
String desA = a.getDescription();
String desB = b.getDescription();
return desA.compareTo(desB);
}
});
sortedByDes.addAll(oo);
System.out.println(sortedByDes);
}
} class Item { private String description; private int id; public Item(String aDes, int aId) { description = aDes; id = aId; }
public String getDescription() {
return description;
}
}
" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/1970ce86012340ef92b45b78ab78eefb.png)
"
直接让item实现Comparable接口
######class Item implements Comparable<Item> {
private String description; private int id; public Item(String aDes, int aId) { description = aDes; id = aId; }
public String getDescription() { return description; }
public int compareTo(Item o) { //dosomething....... } }
######
这个异常是类型转换异常
SortedSet<Item> sortedByDes = new TreeSet<>(new Comparator<Item>() {…}
多态必须是子类对象转换为父类对象,new Comparator<Item>是Comparable的子类,而你写的class Item {…}并不是Comparable的子类,所以会出现类型转换错误。解决办法就是让你的Item 实现Comparable接口
" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/f1751d03008a48fbb0a654680ac00f78.png)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。