使用通用 return 类型重写方法且无警告
Overriding method with generic return type with no warning
简单问题:我有一个有界泛型方法,我想 @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
的帮助(我知道这是一个糟糕的..无法抗拒。)
我只想摆脱泛型并使用协变 return 类型:
interface Overridable {
Stuff getStuff();
}
class SeriourExample implements Overridable {
@Override SeriousStuff getStuff() { ... }
}
简单问题:我有一个有界泛型方法,我想 @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
的帮助(我知道这是一个糟糕的..无法抗拒。)
我只想摆脱泛型并使用协变 return 类型:
interface Overridable {
Stuff getStuff();
}
class SeriourExample implements Overridable {
@Override SeriousStuff getStuff() { ... }
}