java基础问题,求各位大神帮忙解答,感激不尽!报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

因为相信,所以看见。 2020-05-25 15:58:14 95

"

程序运行返回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)
Java
分享到
取消 提交回答
全部回答(1)
  • 因为相信,所以看见。
    2020-05-25 22:53:26

    "

    直接让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)
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程