为什么const
是Java中的保留关键字但没有功能?如果他们决定使用final
,那么最后是const
?
答案 0 :(得分:10)
来自JLS:
关键字
const
和goto
是保留的,即使它们当前未被使用。 如果这些C ++关键字错误地出现在程序中,这可能允许Java编译器生成更好的错误消息。
从历史的角度来看,我可以从2003年quote提供以下Josh Bloch:
Josh Bloch:我们没有计划在Java语言中添加对
const
关键字的支持。这是C ++的混合祝福;如你所知,它仅仅是建议性的,可以开启或关闭。戈斯林讨厌它,并改为final
。你真正想要的是“不可改变的”,但要使这项工作正常,这是一个研究问题。
答案 1 :(得分:3)
你需要让Java 1.0前设计师找出他们的原始动机,但我猜测他们只是保持他们的选择开放。 goto
保留字是另一个例子。
我的猜测是,“aix”在JLS中找到的文本是“postfacto”合理化。为什么?因为struct
,union
,unsigned
等不是Java中的保留字!简而言之,我不买它......无论JLS声称: - )
答案 2 :(得分:2)
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
“关键字const和goto是保留的,即使它们当前未被使用。”
我不知道确切的背景,但也许他们曾经是java的一部分?
答案 3 :(得分:1)
仅保留关键字。它没有任何用例或功能
答案 4 :(得分:0)
认为关键字的保留是为了允许Java语言的扩展包括C ++样式的const方法和指向const类型的指针。用于在Java中实现const正确性的Java Community Process中的增强请求票证于2005年关闭,这意味着const正确性可能永远不会进入官方Java规范。
答案 5 :(得分:0)
来自JLS -
“关键字const和goto是保留的,即使它们当前未被使用。如果这些C ++关键字错误地出现在程序中,这可能允许Java编译器产生更好的错误消息”