『Effective Java 第3版』と『Java Puzzlers』ー パズル51 ー

『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"));
}
}


Effective Java 第3版

Effective Java 第3版

  • 作者: Joshua Bloch
  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: 単行本(ソフトカバー)

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本

この記事へのコメント