Joã*_*ues 7 java boolean-algebra
在Java中,运营商<,>,>=而<=不是为原始定义的boolean类型。但是,相应的包装类Boolean实现了Comparable. 也就是说:true > false
是一个错误,但Boolean.TRUE.compareTo(Boolean.FALSE) > 0很好。
怎么来的?语言设计者改变主意了吗?那为什么要保持语无伦次的行为呢?
尽管随意,但我可以想到为布尔值定义总顺序的优点。有什么缺点吗?
编程语言不是数学结构。它们是复杂的项目,跨越多年,需要很多不同的人。因此,它们会受到观点、遗产、分歧、炒作周期、其他语言的影响、沟通不畅的影响,不幸的是有时还会出现错误和愚蠢。你可能会争辩说,大多数关于语言的决定实际上都是任意的。
你的问题完全正确:为什么会这样?不幸的是,不询问做出相关承诺的人他们还记得多少,这并不是一个真正可行的选择。所以你的猜测和其他人的一样好。
事情就是这样,但你有权有自己的意见。遗憾的是,在某些情况下,当人们放弃一种语言并创建一种新语言时,这种不一致可能会令人沮丧。但由于计算机是物理的、有限的东西,任何新语言也将是不完美的和固执己见的。
如果你问我,启用总排序boolean是一个好主意 - 它不会伤害任何人,但在某些(尽管非常有限)情况下它可以提供一些有限的好处。但 Java 还存在更多、更大的问题。就目前情况而言,我认为 Oracle 不会冒险通过改变这种行为来破坏任何现有程序。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |