我创建了界面:
public interface SubApp {
public String talk(Result<? extends Object> result);
}
这个实施:
class A implements SubApp{
@Override
public String talk(Result<String> result) {...}
}
我的IDE出现以下错误:方法不会覆盖其超类中的方法。
如何在接口中定义方法以使方法public String talk(Result<String> result)
覆盖接口方法?
答案 0 :(得分:3)
您的方法的问题是您的实现比接口定义更具体,因此您的方法将不接受您的接口将输入的广度,并且这是不允许的。 (您可以将输出类型细化为更具体,因为输出类型可以向下转换为不太具体的类型,但输入只有相反的情况。)
这样的事情应该有效:
public interface SubApp<T extends Object> {
public String talk(Result<T> result);
}
class A implements SubApp<String> {
@Override
public String talk(Result<String> result) { ... }
}
答案 1 :(得分:1)
尝试这样的事情 -
public interface SubApp<T> {
public String talk(Result<T> result);
}
class A implements SubApp<String> {
@Override
public String talk(Result<String> result) {...}
}
答案 2 :(得分:1)
尝试类似
的内容public interface SubApp<T> {
public String talk(Result<T> result);
}
顺便说一句,你永远不需要? extends Object
,因为一切都延伸了对象,你并没有用这个表达来限制任何东西
答案 3 :(得分:0)
?
代表一张外卡而非通用卡。请尝试以下方法。
public interface SubApp<X extends Object>
{
public String talk(Result<X> result);
}