![](/img/trans.png)
[英]How does one define a generic wrapper interface type and use it as method return type in java?
[英]Java - How to define interface method with generic
我创建了界面:
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)
覆盖接口的方法?
您的方法的问题在于您的实现比接口定义更具体,因此您的方法将无法接受接口将要输入的内容,因此是不允许的。 (您可以将输出类型细化为更具体的类型,因为可以将输出类型向下转换为次特定类型,但是对于输入而言,情况恰恰相反)。
这样的事情应该起作用:
public interface SubApp<T extends Object> {
public String talk(Result<T> result);
}
class A implements SubApp<String> {
@Override
public String talk(Result<String> result) { ... }
}
试试这样的事情-
public interface SubApp<T> {
public String talk(Result<T> result);
}
class A implements SubApp<String> {
@Override
public String talk(Result<String> result) {...}
}
尝试类似
public interface SubApp<T> {
public String talk(Result<T> result);
}
顺便说一句,你永远不需要? extends Object
? extends Object
因为一切都扩展了对象,所以您不使用该表达式限制任何内容
?
代表通配符,但不代表通用。 请尝试以下方法。
public interface SubApp<X extends Object>
{
public String talk(Result<X> result);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.