【问题标题】:whats the purpose of "const" keyword?“const”关键字的目的是什么?
【发布时间】:2012-05-31 07:57:43
【问题描述】:

为什么const是Java中的保留关键字却没有作用?如果他们决定改用final,那么使用const 有什么意义?

【问题讨论】:

  • @TomaszNurkiewicz:对我来说,这似乎是一个完全不同的问题(它是关于语义的,而这个问题纯粹是关于关键字的)。

标签: java


【解决方案1】:

来自JLS

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

从历史的角度来看,我可以为您提供以下 quote by Josh Bloch 从 2003 年开始:

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

【讨论】:

  • 是的......但看看我的回答:-)
  • @StephenC:我不是 Java 历史学家。但是,我认为 Bloch 在描述 Gosling 对const 的态度时使用“仇恨”一词与后者“保持他的选择开放”是一致的。 :-)
  • 我认为 Bloch 的意思是 Gosling 讨厌 const 在 C++ 中实现的方式……而不是实际的关键字。此外,高斯林是团队的一员。阻止说“让它正常工作是一个研究问题”(IMO)与他们使const成为保留字以保持他们的选择开放......而不是对structunion和以此类推。
  • @StephenC:也许吧。无论如何,我们都在猜测,可能永远不会知道实际的事前想法。
【解决方案2】:

您需要询问 Java 1.0 之前的设计者以找出他们的原始动机,但我推测他们只是保留了他们的选择余地。 goto 保留字是另一个例子。

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

【讨论】:

    【解决方案3】:

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

    “关键字 const 和 goto 是保留的,即使它们当前没有使用。”

    我不知道确切的背景,但也许它们曾经是 java 的一部分?

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          来自 JLS -

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-11-14
            • 2019-05-09
            • 1970-01-01
            • 2022-11-21
            • 1970-01-01
            • 1970-01-01
            • 2020-06-09
            • 1970-01-01
            相关资源
            最近更新 更多