一个简单的问题:我有一个要@Override
的有界通用方法。
class Stuff {}
class SeriousStuff extends Stuff {}
interface Overridable {
<T extends Stuff> T getStuff();
}
如何在不对整个
Overridable
接口进行参数化并且没有未检查的转换警告的情况下执行此操作?class SeriourExample implements Overridable {
SeriousStaff getStuff() { return new SeriousStuff(); }
||
\/
/* WARNING: Type safety: The return type SeriousStaff for
* getStuff() from the type SeriourExample needs unchecked
* conversion to conform to T from the type Overridable
*/
}
如果添加
@SuppressWarnings("unchecked")
仍然礼貌公正,那对我来说还可以。我知道this,但是仍然无法利用建议的解决方案,因为我不能使用
?
通配符。感谢
? extends Reader
的帮助(这是我所知道的..无法抗拒的可怕。) 最佳答案
我只是摆脱泛型并使用协变返回类型:
interface Overridable {
Stuff getStuff();
}
class SeriourExample implements Overridable {
@Override SeriousStuff getStuff() { ... }
}