2015-05-05 11:20:13 -07:00
|
|
|
|
//: references/Immutable1.java
|
2015-05-29 14:18:51 -07:00
|
|
|
|
// <20>2015 MindView LLC: see Copyright.txt
|
2015-05-18 23:05:20 -07:00
|
|
|
|
// Immutable objects are immune to aliasing.
|
2015-05-05 11:20:13 -07:00
|
|
|
|
|
|
|
|
|
public class Immutable1 {
|
|
|
|
|
private int data;
|
|
|
|
|
public Immutable1(int initVal) {
|
|
|
|
|
data = initVal;
|
|
|
|
|
}
|
|
|
|
|
public int read() { return data; }
|
|
|
|
|
public boolean nonzero() { return data != 0; }
|
|
|
|
|
public Immutable1 multiply(int multiplier) {
|
|
|
|
|
return new Immutable1(data * multiplier);
|
|
|
|
|
}
|
|
|
|
|
public static void f(Immutable1 i1) {
|
|
|
|
|
Immutable1 quad = i1.multiply(4);
|
|
|
|
|
System.out.println("i1 = " + i1.read());
|
|
|
|
|
System.out.println("quad = " + quad.read());
|
|
|
|
|
}
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
Immutable1 x = new Immutable1(47);
|
|
|
|
|
System.out.println("x = " + x.read());
|
|
|
|
|
f(x);
|
|
|
|
|
System.out.println("x = " + x.read());
|
|
|
|
|
}
|
2015-05-18 23:05:20 -07:00
|
|
|
|
} /* Output:
|
|
|
|
|
x = 47
|
|
|
|
|
i1 = 47
|
|
|
|
|
quad = 188
|
|
|
|
|
x = 47
|
|
|
|
|
*///:~
|