メソッドの型パラメータを指定する時によく忘れること
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
※他のインスタンスの場合は、省略できないので思い出すことが多い。