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

时间:2011-09-15 09:03:31

标签: java

  

可能重复:
  Why is there no Constant keyword in Java?

为什么在Java中没有使用const关键字? 您是否看到在Java语法中使用某些transitive const or immutable关键字或选择common cumbersome approach的原因有什么缺点?

您是否可以看到原因关闭request,Sun是否提供了任何解释?

4 个答案:

答案 0 :(得分:22)

  

您能否看到关闭请求的原因,Sun是否提供任何解释?

是。 Sun提供了3个理由说明为什么他们不会对request itself中的请求采取行动。我引用:

  

“目前没有计划将此功能添加到Java中   除了匍匐的特征,我们还看到了以下问题   使用此功能:

     
      
  • 现在添加const为时已晚。这是从1.0添加的,   情况可能会有所不同。

  •   
  • Const污染:C ++方法需要所有const方法   用const关键字标记。这意味着最多   方法必须明确标记为const。这倾向于   混淆C ++中的所有方法。

  •   
  • 兼容性是JDK的一个非常重要的功能。   可以说,应该将集合类修改为   表明元素是const。那会   要求更新所有现有的实现   同样的方式,有效地打破了所有现有的非JDK   集合接口的实现。同样的,   hashCode必须是const,打破当前   String的实现。“

  •   

<强>更新

出于好奇,我花了几分钟时间浏览Project COIN mailing list的主题。令我惊讶的是,没有人愿意建议const。 (或者如果他们这样做了,我就错过了。)

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

答案 1 :(得分:7)

实际上,the Wikipedia article you linked有你的答案:

  

Java社区流程中存在用于实现const正确性的增强请求票证,但在2005年因为无法以向后兼容的方式实现而关闭。

答案 2 :(得分:5)

它没有被使用,因为它在Java中没有功能。我引自Wikipedia

  

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

因此,您应该使用final

Here是另一个,可能更可靠的来源。

答案 3 :(得分:0)

使用final关键字..它会为你做与const关键字相同的事情