this を返すメソッドチェーン
出力はどれか。
public class Main {
public static void main(String[] args) {
System.out.println(new Counter().add(2).add(3).total);
}
}
class Counter {
int total;
Counter add(int n) {
total += n;
return this;
}
}
- A
5 - B
3 - C
0 - D コンパイルエラーになる
正解と解説を見る
正解: A
- A: 同じインスタンスに 2 と 3 が足されて 5 です。
- B: add(2) も同じインスタンスに足されています。
- C: add で total が変わります。return this で同じインスタンスに続けて足しています。
- D: this を返すメソッドは正しいコードです。
ポイント
return this;で自分自身を返すと、同じインスタンスに対してメソッドを続けて呼べます。