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使うことで逆にコード量が増えてしまうという面白い例だと思います。ま、あんまり笑えないですけど。