メソッドチェーンってなんじゃらほい?

はてなダイヤリーJavaな人が、どれだけいるか検索したら、もの凄く多いね・・・
人の記事を見ていると読みやすくて、まだまだ色々とひよっ子だなぁと思った・・・

そんな中、id:penultさんのメソッドチェインと継承にピンときたので反応。
アイディアも無いまま、ぐるナイ見つつ、eclipseを立ち上げて考えてみよう。

public class Foo {
  public Foo foo() {
    return this;
  }
}
public class Bar extends Foo {
  public Bar bar() {
    return this;
  }
}
// 文法エラー
// foo() は Foo を返すので、bar() が呼べない
new Bar().foo().bar();

たしかに、foo() は Fooのインスタンスを返すので、子供のbar()目線に立ってあげられない・・・
ジェネリックスはあんまり知らないし・・・シンプルにキャストしてはどうだろうと。

((Bar) new Bar().foo()).bar();  // OK

foo()からFooを取得するのだが、ダウンキャストしちゃって子供の目線に立ってあげられるね
でも何気に方向性が違うような・・・ま、いっか

ちなみに、メソッドチェーンってなんだろね。チェーンと言えば、ServletのFilterChainぐらいしかしんない(x_x
そんなデザパタあったっけ?・・・なかった。ここのサイトから引用する。

メソッド・チェーン
読み:めそっどちぇーん
英語:method chain
別名:

意味:
メソッドチェーンとは、メソッドが自らのオブジェクトを返すように設計されたメソッドであり、追加したい機能をメソッドをつなげるだけで実現する仕組みのこと。
jQueryの大きな特徴であり、jQueryのメソッドのほとんどが戻り値にjQueryオブジェクトを返すように設計されています。そのため使いたいメソッドを好きなように繋げるだけに簡単に機能が追加できるという非常にすぐれた設計を持っています。

へ〜便利そう。つか、変数宣言しなくてよくなる程度かな?・・・キャストしたら繋がりが切れたことになるのかな?

ちなみに、id:penultさんのカテゴリー見てるだけでお腹いっぱい(−”−;
是非あやかりたいものですb