为什么Java Boolean实现Comparable



在Java中,运算符<>>=<=不是为基元boolean类型定义的。然而,相应的包装器类Boolean实现了Comparable。即:true > false是错误,但Boolean.TRUE.compareTo(Boolean.FALSE) > 0可以。

为什么?语言设计师改变主意了吗?那么,为什么要保持这种不连贯的行为呢?

虽然是任意的,但我能想到为布尔值定义总顺序的好处。有什么缺点吗?

编程语言不是数学结构。它们是一个复杂的项目,跨越多年,涉及很多不同的人。因此,他们会受到意见、遗产、分歧、炒作周期、其他语言的影响、糟糕的沟通,不幸的是,有时还会出现错误和愚蠢。你可能会争辩说,关于一种语言的大多数决定实际上都是武断的。

你的问题完全正确:为什么会这样?不幸的是,如果不询问做出相关承诺的人他们还能记住多少,这并不是一个真正可行的选择。所以你的猜测和其他人一样好。

这就是事实,但你有权发表自己的意见。可悲的是,在某些情况下,当人们放弃一种语言并创造一种新语言时,这种不一致可能会令人沮丧。但由于计算机是物理的、有限的东西,任何新的语言都是不完美的、固执己见的。

如果你问我,在boolean上进行全面订购是个好主意——它不会伤害任何人,但在某些情况下(尽管范围很窄(,它可以提供一些有限的好处。但是Java还有更多更大的问题。就目前情况来看,我不认为甲骨文会通过改变这种行为来破坏任何现有的程序。

相关内容

  • 没有找到相关文章

最新更新