小编use*_*108的帖子

尽管有一个可变成员,我怎么能让这个类不可变?

我想使下面的类不可变,即使它有一个可变的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 list immutability

4
推荐指数
2
解决办法
240
查看次数

整数a = 5和new Integer(5)有什么区别?

如果我写下面的代码(在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

java integer wrapper

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

标签 统计

java ×2

immutability ×1

integer ×1

list ×1

wrapper ×1