为什么java.lang.Number不实现Compeable?
有谁知道为什么不实现?这意味着你不能对s进行排序,这在我看来有点奇怪。java.lang.Number
Comparable
Number
Collections.sort
发布讨论更新:
感谢所有有用的回复。我最终对这个话题做了更多的研究。
关于java.lang.Number为什么不实现Compeable的最简单解释植根于可变性问题。
稍加回顾一下,是 、、、、和 的抽象超类型。在该列表中,并且不实现 .java.lang.Number
AtomicInteger
AtomicLong
BigDecimal
BigInteger
Byte
Double
Float
Integer
Long
Short
AtomicInteger
AtomicLong
Comparable
四处挖掘,我发现在可变类型上实现不是一个好的做法,因为在比较期间或之后对象可能会发生变化,从而使比较结果变得无用。两者都是可变的。API设计人员有先见之明,没有实现,因为它会限制未来子类型的实现。事实上,在Java 1.5中添加了很久之后才被最初实现。Comparable
AtomicLong
AtomicInteger
Number
Comparable
AtomicLong
AtomicInteger
java.lang.Number
除了可变性之外,这里可能还有其他考虑因素。中的实现必须将所有数值提升为,因为它能够容纳所有子类型。这种推广在数学和性能方面的含义对我来说有点不清楚,但我的直觉发现这个解决方案是笨拙的。compareTo
Number
BigDecimal
Number