NavigableSet 无法添加不同的子 class
NavigableSet can't add different sub class
我有一个 NavigableSet 并想向其中添加两个元素,但是转换失败,如何解决? AModel 和 BModel 都实现了 BaseModel
BaseModel AModel = new AModel();
BaseModel BModel = new BModel();
NavigableSet<BaseModel > ns = new TreeSet<BaseModel>(Arrays.asList(AModel, BModel));
异常:
Exception in thread "main" java.lang.ClassCastException: com.simon.main.AModel cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at java.util.AbstractCollection.addAll(Unknown Source)
at java.util.TreeSet.addAll(Unknown Source)
at java.util.TreeSet.<init>(Unknown Source)
at com.simon.main.Test3.main(Test3.java:18)
基础模型
public interface BaseModel {
}
模型
public class AModel implements BaseModel{
}
B模型
public class BModel implements BaseModel{
}
如果您没有将 Comparator
传递给 TreeSet
构造函数,那么您的元素 必须 实现 Comparable
(并且必须与彼此的类型具有可比性)。 None 个类型是 Comparable
。
阅读您正在使用的构造函数的 docs:
All elements inserted into the set must implement the Comparable interface. Furthermore, all such elements must be mutually comparable: e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the set.
我有一个 NavigableSet 并想向其中添加两个元素,但是转换失败,如何解决? AModel 和 BModel 都实现了 BaseModel
BaseModel AModel = new AModel();
BaseModel BModel = new BModel();
NavigableSet<BaseModel > ns = new TreeSet<BaseModel>(Arrays.asList(AModel, BModel));
异常:
Exception in thread "main" java.lang.ClassCastException: com.simon.main.AModel cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at java.util.AbstractCollection.addAll(Unknown Source)
at java.util.TreeSet.addAll(Unknown Source)
at java.util.TreeSet.<init>(Unknown Source)
at com.simon.main.Test3.main(Test3.java:18)
基础模型
public interface BaseModel {
}
模型
public class AModel implements BaseModel{
}
B模型
public class BModel implements BaseModel{
}
如果您没有将 Comparator
传递给 TreeSet
构造函数,那么您的元素 必须 实现 Comparable
(并且必须与彼此的类型具有可比性)。 None 个类型是 Comparable
。
阅读您正在使用的构造函数的 docs:
All elements inserted into the set must implement the Comparable interface. Furthermore, all such elements must be mutually comparable: e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the set.