Java 对于强制执行类似类型的集合,相对于编译时检查,抛出运行时异常有什么好处?

Java 对于强制执行类似类型的集合,相对于编译时检查,抛出运行时异常有什么好处?,java,data-structures,comparable,Java,Data Structures,Comparable,当实现我自己的数据结构时,需要一个可比较的类型,我总是这样做: 公共类可比集合{…} 这显然会在编译时强制执行可比较的约束。但在过去的几年里,我一直是一名学生,但不知何故,我忽略了一个事实,即强制执行类似类型的集合的Java实现不是在编译时执行的,而是在运行时执行的,在添加元素时可能抛出一个ClassCastException;e、 g: 公共类树集扩展了抽象集 实现NavigableSet。。。{…} TreeSet由NavigableMap支持,如果它是Comparator为null,则会尝

当实现我自己的数据结构时,需要一个可比较的类型,我总是这样做:

公共类可比集合{…}

这显然会在编译时强制执行可比较的约束。但在过去的几年里,我一直是一名学生,但不知何故,我忽略了一个事实,即强制执行类似类型的集合的Java实现不是在编译时执行的,而是在运行时执行的,在添加元素时可能抛出一个
ClassCastException
;e、 g:

公共类树集扩展了抽象集
实现NavigableSet。。。{…}

TreeSet
NavigableMap
支持,如果它是
Comparator
null
,则会尝试按如下方式转换键:


Comparable这样做的好处是,您可以将TreeSet与未实现
Comparable
但可以提供
比较器的对象一起使用


有关Comparator与Comparator之间的差异的更多信息,请参阅:

您无法始终控制在编译时将哪些对象插入到集合中。允许集合的动态定义更加灵活。

另请参见。
TreeSet
中的元素不需要具有可比性,您可以明确地给出一个比较器。@Tunaki,令人惊讶的是,当您从自己的头脑中摆脱出来时,某些东西会变得更有意义。这太有道理了。现在有一个无聊的时刻。请进一步解释一下,好吗?真的。仅仅因为一个类没有实现
可比性
,并不意味着它不需要或不可比性。