Java NavigableSet can';不要添加不同的子类

Java 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

我有一个NavigableSet,想在其中添加两个元素,但出现了强制转换失败,如何修复它?AModel和BModel都实现了BaseModel

 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{

  }