Geek-Side

Resource > Covariant

Java1.4では継承関係のある戻り値オーバライドはできない

親クラス
 public class Hoge {
 	public Hoge get() {
 		return new Hoge();
 	}
 }
親クラスを継承し、get()メソッドをオーバライド
 public class Fuga extends Hoge {
 	public Fuga get() {
 		return (Fuga) Hoge.get();
 	}
 }
Java1.4の場合type mismatchでエラーとなる。
Java5の場合はcovariant return types 機能により、戻り型がオーバライドをしたメソッドのサブクラスであればオーバライドできる。