java - java中类的不可变性

标签 java immutability

类的不变性仅取决于其字段吗?

如果一个类有一个成员类没有标记为final而是标记为“静态类”,并且这个内部类的成员也是final的,,并且封闭的外部类的所有字段都被标记为final,那么如何处理将为外部类描述不变性?

最佳答案

不,这不取决于。

从更广泛的意义上来说,如果任何时候的所有方法调用都会返回相同的结果,则类是不可变的

很好的例子是java.lang.String类,其中hashcode当您调用 hashcode() 时,字段发生变化第一次,但是返回的结果是相同的

更严格的解释是初始化后没有字段可以更改。它可以实现,例如通过不声明公共(public) setter ,并避免类内的任何更改。另一种方法是 - 正如您所提到的 - 将字段声明为 final.

关于java - java中类的不可变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144121/

相关文章:

javascript - Js Array.prototype.map() 恰好是可变的?

java - 如何停止 Java Android 中的线程?

java.text.ParseException : Unparseable date: "531772200000"

variables - 在 Rust 中, "shadowing"和 "mutability"有什么区别?

java - 为什么首选使用不可变对象(immutable对象)作为 Set 的元素?

swift - 无法修改函数体内的函数参数

java - 在java eclipse ide中实现actionlistener时

java - 如何实现Java爬虫来爬取PDF文件链接?

java - 打印从 0 开始的数字输入

immutability - Sage 不可变向量错误