Genericsもう少し頑張れよ

Java5.0になってからいくつか新機能が増えていますが、Genericsいいよなーと思っていたらイマイチな点を発見してしまった!例を交えて簡単に。
IUserというインタフェースを実装しているUserクラスがあるとします。以下のようなコードは当然書けます。

public IUser getUser() {
  return new User();
}

この関係を利用して、以下のように書いてみます。

public List<IUser> getIUserList() {
  return getUserList();
}

public List<User> getUserList() {
  // 略
}

これ、getIUserListはコンパイルエラーになるんですよ。Genericsの型の部分の階層構造は見てくれない。。Generics使ってなければ当然コンパイルエラーなく動くんですよね。Generics使うことで逆にコード量が増えてしまうという面白い例だと思います。ま、あんまり笑えないですけど。