5

新しい Oracle Certified Professional - Java SE7 Programmer 試験の準備に使用する本で、メソッドのオーバーライドを扱うセクションで、次のことに遭遇しました。

オーバーライドするメソッドは、基本バージョンと同じ引数リストの型(または互換性のある型) を持つ必要があります。

「互換性のあるタイプ」とはどういう意味ですか? つまり、引数リストの型が異なるとすぐに、オーバーライドではなくオーバーロードします。

varargs 引数を取るメソッドを、同じ型の配列を取るメソッドでオーバーライドすることしか考えられません。コンパイラは警告を出しますが、それでもコンパイルします。

互換性のある型とはどういう意味ですか? 本の間違いですか?

4

1 に答える 1

2

多分それは型消去と関係があります。これは有効な Java ですが、警告が表示されるだけです。

abstract class Foo {
    public abstract void method(List<String> xs);
}

class Bar extends Foo {
    @Override
    public void method(List xs) {
    }
}

raw 型Listは と互換性がありList<String>ます。

于 2013-10-29T13:58:51.970 に答える