2012-05-06 4 views
4

のメソッドをオーバーライドすることはできません。どうして?は、このコードはコンパイルされないため、名前の衝突

class C { 
    void foo(List<?> l) { } 
} 

class D extends C { 
    void foo(List l) { } 
} 
+0

コンパイルエラーを投稿してください。質問に答えるのが簡単になります。 –

+0

ここでOKメッセージは次のとおりです。B内のname clash foo(java.util.List )A内のfoo(java.util.List)は同じ消去を持ちますが、どちらもどちらも上書きされません。 – Gmacar

答えて

2

一覧<は>最初の例はコンパイルできない理由である他の方法で回避一覧から派生した、ではないため、2番目の例では、コンパイルされます。

+0

これは短い単語では正しいです – Justin

+1

これは一般的ではありません:文字列はオブジェクトを拡張しますが、逆の方法ではありませんが、最初の例はコンパイルされます。 – Gmacar

+0

@Gmacar - 2つの例では、文字列またはオブジェクトという単語は表示されません。 –

関連する問題