// references/Immutable2.java// (c)2017 MindView LLC: see Copyright.txt// We make no guarantees that this code is fit for any purpose.// Visit http://OnJava8.com for more book information.// A companion class to modify immutable objectsclass Mutable {private int data;Mutable(int initVal) {data = initVal;}public Mutable add(int x) {data += x;return this;}public Mutable multiply(int x) {data *= x;return this;}public Immutable2 makeImmutable2() {return new Immutable2(data);}}public class Immutable2 {private int data;public Immutable2(int initVal) {data = initVal;}public int read() { return data; }public boolean nonzero() {return data != 0;}public Immutable2 add(int x) {return new Immutable2(data + x);}public Immutable2 multiply(int x) {return new Immutable2(data * x);}public Mutable makeMutable() {return new Mutable(data);}public staticImmutable2 modify1(Immutable2 y) {Immutable2 val = y.add(12);val = val.multiply(3);val = val.add(11);val = val.multiply(2);return val;}// This produces the same result:public staticImmutable2 modify2(Immutable2 y) {Mutable m = y.makeMutable();m.add(12).multiply(3).add(11).multiply(2);return m.makeImmutable2();}public static void main(String[] args) {Immutable2 i2 = new Immutable2(47);Immutable2 r1 = modify1(i2);Immutable2 r2 = modify2(i2);System.out.println("i2 = " + i2.read());System.out.println("r1 = " + r1.read());System.out.println("r2 = " + r2.read());}}/* Output:i2 = 47r1 = 376r2 = 376*/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。