예시


<aside> 🪣

package address;

public class ImmutableObj {

    private final int value;

    public ImmutableObj(int value) {
        this.value = value;
    }

    public ImmutableObj add(int addValue) {
        int result = value+addValue;
        return new ImmutableObj(result);
    }

    public int getValue() {
        return value;
    }
}

값 변경 시 아예 새로운 객체를 생성함
--------------------------------
package address;

public class ImmutableMain1 {

    public static void main(String[] args) {
        ImmutableObj obj1 = new ImmutableObj(10);
        ImmutableObj obj2 = obj1.add(20);

        System.out.println(obj1.getValue());
        System.out.println(obj2.getValue());
    }
}

출력
10
30

</aside>

image.png