Javaもまだまだ驚きがいっぱい


自分の不勉強を晒すようだけど、まだまだJavaも未熟だなと思う今日この頃です。

最近知ったJava5の新機能にcovariant(共変)というのがあるのを知りました。
オーバーライドしたときに、戻り値の型にサブクラスを指定できるようになったんですね。
例えばこんな感じ。
親クラス
 public class Hoge {
 	public Hoge get() {
 		return new Hoge();
 	}
 }
親クラスを継承し、get()メソッドをオーバライド。戻り値の型にサブクラスを指定できる。
 public class Fuga extends Hoge {
 	public Fuga get() {
 		return (Fuga) Hoge.get();
 	}
 }

もう一個、Arrays.asListメソッドは「固定サイズのリスト」を返すんですね。
addメソッドで落っこちてビックリしたよ。

Comment