【发布时间】:2012-05-31 07:57:43
【问题描述】:
为什么const是Java中的保留关键字却没有作用?如果他们决定改用final,那么使用const 有什么意义?
【问题讨论】:
-
@TomaszNurkiewicz:对我来说,这似乎是一个完全不同的问题(它是关于语义的,而这个问题纯粹是关于关键字的)。
标签: java
为什么const是Java中的保留关键字却没有作用?如果他们决定改用final,那么使用const 有什么意义?
【问题讨论】:
标签: java
来自JLS:
关键字
const和goto是保留的,即使它们当前未使用。 如果这些 C++ 关键字错误地出现在程序中,这可能允许 Java 编译器生成更好的错误消息。
从历史的角度来看,我可以为您提供以下 quote by Josh Bloch 从 2003 年开始:
Josh Bloch:我们没有计划在 Java 语言中添加对
const关键字的支持。这在 C++ 中是喜忧参半。如您所知,它只是建议性的,可以打开或关闭。高斯林讨厌它,而是做了final。您真正想要的是“不可变”,但要使其正常工作是一个研究问题。
【讨论】:
const 的态度时使用“仇恨”一词与后者“保持他的选择开放”是一致的。 :-)
const 在 C++ 中实现的方式……而不是实际的关键字。此外,高斯林是团队的一员。阻止说“让它正常工作是一个研究问题”(IMO)与他们使const成为保留字以保持他们的选择开放......而不是对struct、union和以此类推。
您需要询问 Java 1.0 之前的设计者以找出他们的原始动机,但我推测他们只是保留了他们的选择余地。 goto 保留字是另一个例子。
我的猜测是,“aix”在 JLS 中找到的文本是“事后”合理化。为什么?因为struct、union、unsigned 等不是Java 中的保留字!简而言之,我不买它......不管 JLS 声称什么:-)
【讨论】:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
“关键字 const 和 goto 是保留的,即使它们当前没有使用。”
我不知道确切的背景,但也许它们曾经是 java 的一部分?
【讨论】:
只是保留关键字。它没有任何用例或功能
【讨论】:
人们认为保留关键字是为了允许对 Java 语言进行扩展,以包括 C++ 风格的 const 方法和指向 const 类型的指针。 Java Community Process 中用于在 Java 中实现 const 正确性的增强请求票已于 2005 年关闭,这意味着 const 正确性可能永远不会进入官方 Java 规范。
【讨论】:
来自 JLS -
“关键字 const 和 goto 是保留的,即使它们当前未使用。如果这些 C++ 关键字错误地出现在程序中,这可能允许 Java 编译器产生更好的错误消息”
【讨论】: