public class Immutable1
1: //: appendixa:Immutable1.java
2: // From 'Thinking in Java, 2nd ed.' by Bruce Eckel
3: // www.BruceEckel.com. See copyright notice in CopyRight.txt.
4: // Objects that cannot be modified
5: // are immune to aliasing.
7: public class Immutable1 {
8: private int data;
9: public Immutable1(int initVal) {
10: data = initVal;
11: }
12: public int read() { return data; }
13: public boolean nonzero() { return data != 0; }
14: public Immutable1 quadruple() {
15: return new Immutable1(data * 4);
16: }
17: static void f(Immutable1 i1) {
18: Immutable1 quad = i1.quadruple();
19: System.out.println("i1 = " + i1.read());
20: System.out.println("quad = " + quad.read());
21: }
22: public static void main(String[] args) {
23: Immutable1 x = new Immutable1(47);
24: System.out.println("x = " + x.read());
25: f(x);
26: System.out.println("x = " + x.read());
27: }
28: } ///:~