メソッドの型パラメータを指定する時によく忘れること

thisをよく忘れるのでメモ。

private <T> T foo() {
   // なんか処理
   return (T) obj;
}

変数に代入するような場合は、型推論が効くので簡単。

String str = foo();
Date date = foo();

これをメソッドでつなげたりするとウマく推論できなくなる。

// コンパイルエラー
// fooの戻り値はObject型になる(型TがObject型)
long time = foo().getTime();

で、こんな場合は2回に分けると解決

Date date = foo();
long time = date.getTime();

・・・1行で書きたいよね。

というわけで、1行で書きたい場合は、fooに型パラメータを明示する。
指定方法はメソッドの前に<型>を指定すれば良いんだけど、次のような書式はダメ。

long time = <Date>foo().getTime();

thisを書かないと文法的にダメという仕様。

long time = this.<Date>foo().getTime();

まあ、よく忘れるw
※他のインスタンスの場合は、省略できないので思い出すことが多い。