これは有効な Java です。
public interface Bar {
Number getFoo();
}
public class MyBar implements Bar {
@Override
public Integer getFoo() {
return Integer.MAX_VALUE;
}
}
Integer は Number のサブクラスであるため、Java が有効である理由がわかりました。しかし、言語がサブクラスが戻り値の型を再定義できるようにする正当な理由があるかどうか疑問に思っていますか? これが便利な場所はありますか?ベスト プラクティスでは、次のようにする必要はありません。
public class MyBar implements Bar {
@Override
public Number getFoo() {
return Integer.MAX_VALUE;
}
}