为什么Java中没有常量功能?
我试图找出Java中常量背后的原因,我已经了解到Java允许我们使用关键字声明常量。final
我的问题是为什么Java没有引入常量()功能。由于许多人说它来自C++,因此C++我们有关键字。const
const
请分享您的想法。
我试图找出Java中常量背后的原因,我已经了解到Java允许我们使用关键字声明常量。final
我的问题是为什么Java没有引入常量()功能。由于许多人说它来自C++,因此C++我们有关键字。const
const
请分享您的想法。
每次我从繁重C++编码到Java时,我都需要一点时间来适应Java中缺乏恒定性。C++中的这种用法与仅仅声明常量变量有很大不同,如果你不知道的话。从本质上讲,它确保通过一种称为const-pointer的特殊类型的指针访问对象是不可变的 当在Java中,在我通常想要返回const指针的地方,我而是返回一个引用,其接口类型仅包含不应该有副作用的方法。不幸的是,这不是由语言强制执行的。const
维基百科提供有关该主题的以下信息:
有趣的是,Java语言规范将const视为保留关键字 - 即不能用作变量标识符的关键字 - 但没有为其分配语义。据认为,关键字的保留是为了允许Java语言的扩展包括C++样式的const方法和指向const类型的指针。Java社区进程中用于在Java中实现const正确性的增强请求票证于2005年关闭,这意味着const正确性可能永远不会进入官方Java规范。
const
是什么意思
首先,要意识到“const”关键字的语义对不同的人来说意味着不同的东西:
final
const
为什么或为什么不反对
第二,如果你真的想深入研究一些“赞成”与“反对”的争论,请参阅此增强请求(RFE)“错误”下的讨论。此 RFE 请求“只读引用”类型的“const”功能。1999年开放,然后在2005年被Sun关闭/拒绝,“const”话题引起了激烈的辩论:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4211070
虽然双方都有很多很好的论点,但一些经常被引用(但不一定是令人信服或明确的)反对理由包括:const
const
是什么意思)在有人试图争论这些是好理由还是坏理由之前,请注意这些不是我的理由。它们只是我从浏览RFE讨论中收集的一些原因的“要点”。我自己不一定同意他们的观点 - 我只是试图引用为什么有些人(不是我)可能会觉得关键字可能不是一个好主意。就个人而言,我希望以明确的方式将更多的“const”语义引入语言中。const