相关疑难解决方法(0)

具有ArrayList成员变量的不可变对象 - 为什么可以更改此变量?

我有一个包含各种成员变量的类.有一个构造函数,有getter方法,但没有setter方法.实际上,这个对象应该是不可变的.

public class Example {
   private ArrayList<String> list; 
}
Run Code Online (Sandbox Code Playgroud)

现在我注意到以下内容:当我使用getter-method获取变量列表时,我可以添加新值等等 - 我可以更改ArrayList.当我下次get()为此变量调用时,将ArrayList返回更改的变量.怎么会这样?我没有再设置它,我只是努力了!有了String这种行为是不可能的.那么这里的区别是什么?

java object member immutability getter-setter

18
推荐指数
2
解决办法
3万
查看次数

当实例变量作为arraylist存在时类的不变性

我有一个不可变的类

假设我有一个类型为ArrayList的成员变量的getter方法.在那种情况下,当我获得对该变量的引用时,我可以添加或删除它中的元素.在那种情况下,不变性似乎被侵犯了.

任何人都可以详细解释这个概念吗?

java immutability

5
推荐指数
1
解决办法
352
查看次数

不可变类中的对象作为成员变量

我有一个包含Employee对象的类X. 我想让类X成为不可变的.现在即使我将Employee对象声明为final,Employee类也是独立存在的,人们可以访问该特定employee对象的setter方法.是否有可能有一个普通的类Employee和另一个持有Employee的不可变类X但是一旦分配了Employee的值,我们就无法改变它的值?

public final class X {

private final Employee emp;

public X (Employee e){
   this.emp = e;

}
public Employee getEmp(){

return emp;

}

} 
Run Code Online (Sandbox Code Playgroud)

员工类我不想让它变成不可变的,只是想让类X成为immutable.Hence一旦员工被分配,就不应该允许它改变它.如果没有使Employee类成为不可变的话,这是可能的吗?我希望类Employee独立存在,所以不要私有化它的构造.

java immutability

1
推荐指数
1
解决办法
648
查看次数

标签 统计

immutability ×3

java ×3

getter-setter ×1

member ×1

object ×1