Source of Immutable1.java


  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: } ///:~