首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >变量的Java final关键字

变量的Java final关键字
EN

Stack Overflow用户
提问于 2010-11-17 02:15:41
回答 6查看 4.9K关注 0票数 17

Wikipedia says it doesn't.final关键字如何不使变量不可变?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-17 02:21:02

在Java中,术语final指的是引用,而immutable指的是对象。将final修改器指定给引用意味着它不能更改为指向另一个对象,但如果对象本身是可变的,则可以对其进行修改。

例如:

代码语言:javascript
运行
复制
final ArrayList<String> arr = new ArrayList<String>();
arr.add("hello"); // OK, the object to which arr points is mutated
arr = null; // Not OK, the reference is final and cannot be reassigned to

正如维基百科文章提到的那样,如果你来自C++,你必须将const的概念与final和不可变分开。

票数 31
EN

Stack Overflow用户

发布于 2010-11-17 02:20:50

尽管不推荐这样做,但Java允许使用reflection修改最终变量。

票数 3
EN

Stack Overflow用户

发布于 2010-11-17 02:20:42

假设您已经声明了myList是最终的。您仍然可以向myList添加新项,因此它的状态不是不可变的。由于final关键字的原因,您不能做的是更改myList以引用不同的列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4197494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档