2017-06-20 9 views
0
@Override 
    public <E extends Enum<E>> E getValue(){ 
     return (E) super.getValue(); 
    } 

なぜこのオーバーライドは機能しませんか? Ideaが返すエラーは、両方のメソッドが同じ消去を持つが、互いにオーバーライドしていないということです。VaadinコンボボックスのgetValue()メソッドをオーバーライドできません

編集:

は、クラスは型消去した後、同じシグネチャを持っています2つのオーバーロードされたメソッドを持つことはできません同じ生タイプ

にそれぞれ過消去の仮パラメータ型メソッドをオーバーロードすることはできません。

public class Example { 
    public void print(Set<String> strSet) { } 
    public void print(Set<Integer> intSet) { } 
} 

オーバーロードはすべて同じクラスファイル表現を共有し、コンパイル時エラーを生成します。

出典:https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#cannotOverload

答えて

1

パラメータ型は実行時に消去されています。したがって、署名は同一です。

詳細はone of the other solutionsをご覧ください。

関連する問題