Java NavigableSet can';不要添加不同的子类
我有一个NavigableSet,想在其中添加两个元素,但出现了强制转换失败,如何修复它?AModel和BModel都实现了BaseModelJava NavigableSet can';不要添加不同的子类,java,collections,Java,Collections,我有一个NavigableSet,想在其中添加两个元素,但出现了强制转换失败,如何修复它?AModel和BModel都实现了BaseModel BaseModel AModel = new AModel(); BaseModel BModel = new BModel(); NavigableSet<BaseModel > ns = new TreeSet<BaseModel>(Arrays.asList(AModel, BModel)); 阿莫代尔 pub
BaseModel AModel = new AModel();
BaseModel BModel = new BModel();
NavigableSet<BaseModel > ns = new TreeSet<BaseModel>(Arrays.asList(AModel, BModel));
阿莫代尔
public class AModel implements BaseModel{
}
B模型
public class BModel implements BaseModel{
}
如果未将
比较器
传递给树集
构造函数,则元素必须实现可比
(并且必须与彼此的类型可比)。您的类型都不是可比的
请阅读您正在使用的构造函数的说明:
插入到集合中的所有元素必须实现可比较的接口。此外,所有这些元素必须是相互可比的:e1.compareTo(e2)不能为集合中的任何元素e1和e2抛出ClassCastException
旁注:根据Java编码惯例(为了便于帮助您,您应该遵守这些惯例),变量名应该是
aModel
,而不是aModel
等。另一个注意事项:您可以发布异常的堆栈跟踪吗?我的回答不正确,因为我遗漏了类型为BaseModel
(你的风格让我明白了)的变量,因此数组。asList()
应该不是问题。
public class AModel implements BaseModel{
}
public class BModel implements BaseModel{
}