7

为什么constJava中有保留关键字但没有功能?如果他们决定final改用,那么拥有的意义const何在?

4

6 回答 6

11

JLS

关键字constgoto是保留的,即使它们当前未使用。如果这些 C++ 关键字错误地出现在程序中,这可能允许 Java 编译器生成更好的错误消息。

从历史的角度来看,我可以为您提供Josh Bloch 2003 年的以下引用:

Josh Bloch:我们没有计划const在 Java 语言中添加对关键字的支持。这在 C++ 中是喜忧参半。如您所知,它只是建议性的,可以打开或关闭。高斯林讨厌它,final反而做了。您真正想要的是“不可变的”,但要使其正常工作是一个研究问题。

于 2012-05-31T08:00:20.237 回答
3

您需要询问 Java 1.0 之前的设计者以找出他们最初的动机,但我推测他们只是保持他们的选择开放。goto保留字是另一个例子。

我的猜测是,在 JLS 中找到的“aix”文本是“事后”合理化。为什么?因为struct, union,unsigned等等在 Java 中不是保留字!简而言之,我不买它......不管 JLS 声称什么:-)

于 2012-05-31T08:00:40.720 回答
2

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

"The keywords const and goto are reserved, even though they are not currently used."

i don't know about the exact background but maybe they used to be part of java?

于 2012-05-31T07:59:30.897 回答
1

只是保留关键字。它没有任何用例或功能

于 2012-05-31T08:00:26.657 回答
0

人们认为保留关键字是为了允许对 Java 语言进行扩展,以包括 C++ 风格的 const 方法和指向 const 类型的指针。Java Community Process 中用于在 Java 中实现 const 正确性的增强请求票已于 2005 年关闭,这意味着 const 正确性可能永远不会进入官方 Java 规范。

于 2012-05-31T08:02:43.630 回答
0

从 JLS -

“关键字 const 和 goto 是保留的,即使它们当前未使用。如果这些 C++ 关键字错误地出现在程序中,这可能允许 Java 编译器产生更好的错误消息”

于 2012-05-31T08:09:39.110 回答