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

为什么这个重写不起作用? Idea返回的错误是两种方法都有相同的擦除,但它们并不互相覆盖。不能覆盖Vaadin ComboBox的getValue()方法

编辑:

不能重载一种方法,其中每个重载删除的形式参数类型,以相同的原始类型

一个类不能有两个重载的方法类型擦除后,将具有相同的签名。

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

回答