我想使下面的类不可变,即使它有一个可变的List成员.我怎样才能做到这一点?
class MyImmutableClass {
private List<Integer> data;
public MyImmutableClass(List<Integer> data) {
this.data = data;
}
public List<Integer> getData() {
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
下面是测试类,它的main()函数修改了对象状态.
class TestMyImmutableClass{
public static void main(String[] args) {
List<Integer> data = new ArrayList<Integer>();
data.add(2);
data.add(5);
MyImmutableClass obj = new MyImmutableClass(data);
obj.getData().add(3);
System.out.println("Data is; " + obj.getData());
}
}
Run Code Online (Sandbox Code Playgroud)
O/P: Data is; [2, 5, 3]
如果我写下面的代码(在java中):
Integer a =new Integer(5);
Integer b=new Integer(5);
if(a==b){
System.out.println("In ==");
}
if(a.equals(b)){
System.out.println("In equals");
}
Run Code Online (Sandbox Code Playgroud)
我的输出是:“等于”,但是如果我将第一行和第二行更改为->
Integer a =5;
Integer b=5;
Run Code Online (Sandbox Code Playgroud)
那么我的输出是:
In ==
In equals
Run Code Online (Sandbox Code Playgroud)
那么创建Integer对象有什么区别?当我们这样做时如何创建它Integer a =5?
如果我创建Integer a=5并创建另一个对象,是否意味着a和b对象引用相同的对象Integer b=5?