为什么const关键字不在Java中使用?

Myk*_*ych 23 java

可能重复:
为什么Java中没有Constant关键字?

为什么const关键字不在Java中使用?
你能看到在Java语法中使用一些传递const或不可变关键字的缺点,或者为什么选择常见的繁琐方法

你能看到关闭请求的理由,Sun是否提供了任何解释?

Ste*_*n C 22

你能看到关闭请求的理由,Sun是否提供了任何解释?

是.Sun提供了3个理由说明为什么他们不会在请求中对请求本身采取行动.我引用:

"目前还没有计划将此功能添加到Java中.除了渐行功能之外,我们还看到了此功能的以下问题:

  • 添加const现在已经太晚了.如果从1.0添加,情况可能会有所不同.

  • Const污染:C++方法要求所有const方法都用const关键字标记.这意味着大多数方法必须明确标记为const.这往往会混淆C++中的所有方法.

  • 兼容性是JDK的一个非常重要的特性.可以说,应该修改集合类以指示元素是const.这将要求以相同的方式更新所有现有实现,从而有效地破坏集合接口的所有现有非JDK实现.类似地,hashCode必须是const,打破String的当前实现."


UPDATE

出于好奇,我花了几分钟时间浏览了Project COIN邮件列表的主题.令我惊讶的是,没有人打算提出建议const.(或者如果他们这样做了,我就错过了.)

因此,任何一个人都不再关心(足够)这个想法,或者具有足够专业知识来制定项目COIN提案的人认识到它没有机会通过集合.

  • @Mykhaylo Adamovych - 我只是引用了 Sun 所说的话。我不会假装了解所涉及的所有问题,但我敢肯定这并不像您想象的那么简单...... (2认同)

Thi*_*ilo 7

实际上,你链接的维基百科文章有你的答案:

Java Community Process中存在用于实现const正确性的增强请求票证,但是在2005年以不可能以向后兼容的方式实现的情况下关闭了.


小智 5

它没有被使用,因为它在Java中没有功能.我引用维基百科:

虽然在Java中保留为关键字,但const不使用且没有功能.

因此你应该使用final.

是另一个,也许更可靠的来源.