我创建了界面:
public interface SubApp {
public String talk(Result<? extends Object> result);
}
这个实现:
class A implements SubApp{
@Override
public String talk(Result<String> result) {...}
}
我的 IDE 出现以下错误:方法未覆盖其父类(super class)中的方法。
如何在接口(interface)中定义方法来创建方法public String talk(Result<String> result)
重写接口(interface)方法?
最佳答案
您的方法的问题在于您的实现比接口(interface)定义更具体,因此您的方法不会接受接口(interface)所接受的输入范围,这是不允许的。 (您可以将输出类型细化为更具体,因为输出类型可以向下转换为不太具体的类型,但对于输入来说,情况恰恰相反)。
这样的事情应该有效:
public interface SubApp<T extends Object> {
public String talk(Result<T> result);
}
class A implements SubApp<String> {
@Override
public String talk(Result<String> result) { ... }
}
关于Java - 如何使用泛型定义接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20041000/