程序运行返回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;
}
}
Laissez directement l'élément implémenter l'interface comparable
Cette exception est une exception de conversion de type
.SortedSet<Item> sortedByDes = new TreeSet<>(new Comparator<Item>() {…}
Le polymorphisme doit être un objet de sous-classe converti en objet de classe parent , le nouveau Comparator<Item> est une sous-classe de Comparable et la classe Item que vous avez écrite {…} n'est pas une sous-classe de Comparable, donc une erreur de conversion de type se produira. La solution est de faire en sorte que votre Item implémente l'interface Comparable