『Effective Java 第3版』と『Java Puzzlers』ー パズル51 ー [Effective Java 第3版]
『Effective Java 第3版』の「項目83 遅延初期化を注意して使う」で言及されているのがパズル51です。
パズル51 何が言いたいの?(What's the Point?)
このプログラムは、2つの不変な値クラス(value class)、すなわち、そのイン>スタンスが値を表すクラスを持っています。1つのクラスは、整数座標を持つ面上の点を表しています。そして、2番目のクラスは、このパズルにちょっと色を添えています。main
プログラムは、2番目のクラスのインスタンスを生成して表示しています。このプログラムは、何を表示しますか?
class Point { protected final int x, y; private final String name; // 生成時にキャッシュされる Point(int x, int y) { this.x = x; this.y = y; name = makeName(); } protected String makeName() { return "[" + x + "," + y + "]"; } public final String toString() { return name; } } public class ColorPoint extends Point { private final String color; ColorPoint(int x, int y, String color) { super(x, y); this.color = color; } protected String makeName() { return super.makeName() + ":" + color; } public static void main(String[] args) { System.out.println(new ColorPoint(4, 2, "purple")); } }
2018-10-21 06:34
コメント(0)
コメント 0