bad*_*nda 6 java generics polymorphism overriding interface
我试图覆盖扩展另一个接口的接口中的方法声明。这两个接口都使用泛型。根据 Java 教程,这应该是可能的,但该示例不使用泛型。当我尝试实现它时,编译器显示以下错误(我已经替换了名称,因为有些代码不是我自己的。):
InterfaceExtended 中的 myMethod(T) 与 Interface 中的 myMethod(T) 发生冲突;两种方法都具有相同的擦除,但都不会覆盖另一个。
代码如下所示:
public interface Interface<T>
{
public void myMethod(T x);
}
public interface ExtendedInterface<T> extends Interface<T>
{
public void myMethod(T x);
}
Run Code Online (Sandbox Code Playgroud)
如果有人有关于如何改变它以使其可接受的建议,或者关于导致问题的原因的解释,我将非常感激。
谢谢!
坏熊猫
你想要一个重载版本的 myMethod 吗?那么你不应该使用 T 两次,而是这样:
public interface Interface<T>
{
public void myMethod(T x);
}
public interface ExtendedInterface<T, V> extends Interface<T>
{
public void myMethod(V x);
}
Run Code Online (Sandbox Code Playgroud)
现在可能有这样的事情:
class MyClass implements ExtendedInterface<String, Integer> {
public void myMethod(String x) { .. }
public void myMethod(Integer x) { .. }
}
Run Code Online (Sandbox Code Playgroud)
编辑:有趣的是,这也有效(虽然它没用):
class MyClass implements ExtendedInterface<String, String> {
public void myMethod(String x) { .. }
}
Run Code Online (Sandbox Code Playgroud)