开发者社区> 问答> 正文

java基础问题,求各位大神帮忙解答,感激不尽!报错

"

程序运行返回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)

展开
收起
因为相信,所以看见。 2020-05-25 15:58:14 854 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    "

    直接让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)
    2020-05-25 22:53:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载