java - 如何使非原始类成员不可变

标签 java immutability

我有一个小问题,请告诉我这是否正确。

在使类不可变时,我有一个非原始成员。我怎样才能使该成员不可变。虽然在它自己的实现中它不是不可变的,例如

public Class A{
private final int  immutableInt;
private final String immutableString;
private final Employee toBeMadeImmutable

// individual getters

}

不,如果对“toBeMadeImmutable”使用 setter/getter ,我会得到它的对象,我可以用那个对象做任何事情,所以它是可变的,这不是必需的。

如何实现非原始成员的不变性

最佳答案

Java 不提供对不变性的内置支持。

您可以通过将字段的 setter 设置为私有(private) 并仅将其 getter 公开为公共(public) 方法来使字段不可变。

此外,不能通过将变量声明为 final 来实现不变性。 通过将变量声明为 final,您指定您不会更改引用指向的对象。您仍然可以更改引用指向的对象的状态(通过更改其字段)。

关于java - 如何使非原始类成员不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24311661/

相关文章:

java - 从服务器接收的字符串创建 JSON 对象

java - 从方法返回可变对象的不可变副本

c++ - 集合中的不可变对象(immutable对象)(C++ 和 Qt)

javascript - Angular 动态选择具有相互影响的项目

c# - 我们如何定义字符串常量而不是数组

java - 关于书籍示例的问题 - Java 并发实践, list 4.12

java - 有没有办法缩短这样的事情?

java - Junit在Spring Boot中测试独立的Service层

java - Jenkins "execute shell command"段字符串参数的使用

java - @WebFilter 排除 url 模式