Простой вопрос: у меня ограниченный общий метод. Я хочу @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
вам помочь
Я думаю, вы не можете. –
Здесь 'T' не является общим для класса, а для самого метода. Следовательно, это не имеет смысла. –
@Arnaud: imho может иметь смысл, когда «Overridable» участвует в сложном дереве иерархии, и вы не хотите загрязнять свой код с помощью общих аннотаций при создании/определении/возвращении этих объектов. ? – Campa