简单的问题:我想要@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
为你提供帮助(我知道这是一个可怕的......无法抗拒。)
答案 0 :(得分:2)
我会摆脱泛型并使用协变返回类型:
interface Overridable {
Stuff getStuff();
}
class SeriourExample implements Overridable {
@Override SeriousStuff getStuff() { ... }
}