AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法

Javaの話です。

Androidだと、普通xmlで画面を定義して、そのインスタンス生成するためにfindViewByIdというメソッドを使う。かなり多く使う。xmlで定義する時点で、型は(android.view.Viewのなんらかのサブクラスで)決まっているわけですが、それが必ず android.view.View 型で返ってくる。で、これ使いにくいし、ちょっと工夫すれば微妙に記述量減らせるんじゃないか?っていう話。

たとえば、大体のサンプルを見ても*1

Button myButton = (Button) findViewById(R.id.my_button);

とか

ListView view = (ListView)findViewById(R.id.my_view);

となって

なんで、型を2回も書かないといけないの?Scalaだったら、Typed Resources といって、xml定義した時点で勝手にそれに応じた型で生成されて、コード上では一度も型を書かなくていいのに馬鹿なの死ぬの・・・
とイライラするわけです。View型そのままの場合もあるけど、TextViewとかListViewとか色々Viewのサブクラスがあって、たいていそれらの型でキャストしないといけなくなるんです。で、以下のようなユーティリティを(共通で使うActivityの親とかに?)定義しておけば、

protected <T extends View> T _findViewById(final int id){
    return (T)findViewById(id);
}

こんなふうに、キャストの部分の型を書かなくてすむんじゃないか?という

Button myButton = _findViewById(R.id.my_button);

とか

ListView view = _findViewById(R.id.my_view);
  • すでにこんな感じのこと誰か書いてたらごめんなさい => 見つけたのでコメント追記
  • Scalaばかり書いててJavaそれほど詳しくないので、なんか間違っているとか、この方法に明らかにデメリットがあるなら教えて下さい*2
  • もしデメリットがないならば、なんで戻り値の型がデフォルトでこういうシグネチャになっていないんだろうか・・・

*1:まぁそれほどJavaAndroidの経験長くないので、そんなにコード読んでないですが・・・

*2:もちろんメソッド呼び出しが一回分増えるとかはありますが・・・