程序运行返回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;
}
}
アイテムに Comparable インターフェイスを直接実装させます
リーリー
この例外は型変換例外です
SortedSet<Item>sortedByDes = new TreeSet<>(new Comparator<Item>() {…}
多態性は親クラス オブジェクトに変換されたサブクラス オブジェクトである必要があります、新しい Comparator<Item> は Comparable のサブクラスであり、作成したクラス Item {...} は Comparable のサブクラスではないため、型変換エラーが発生します。解決策は、Item に Comparable インターフェイス 。