2013/04/18

Cascade constractor

知ってる人にとっては当たり前だが知らない人は知らないという定石コーディング
オーバーライドの連鎖 コンストラクタでの例
public Human(Calendar birthDay, String firstName, String lastName) {
   this.birthDay = birthDay;
   this.firstName = firstName;
   this.lastName = lastName;
}

public Human(String firstName, String lastName) {
   this(null, firstName, lastName);
}

public Human(String lastName) {
   this(null, null, lastName);
}

public Human() {
   this(null, null, null);
}
初期値を詳細に設定できるコンストラクタと適当に作るコンストラクタを用意するが、初期化のコードは詳細なコンストラクタに纏める書き方。
どのコンストラクタを使っても初期化コードは同じものが使われるのでコードの重複が避けられる、という例。