У меня этот вопрос:Java возвращение обобщенного типа, который расширяет интерфейс
public interface Node {
public<T extends Node> T copy();
}
public class Point2D implements Node {
@Override
public <T extends Node> Point2D copy() {
return new Point2D(this);
}
}
Почему я получаю The return type is incompatible with Node.copy()
? Point2D реализует Node, как я могу сделать ошибку dissapear, сохраняя возвращаемый тип? Если я ставлю T вместо этого, если Point2D копия() я получаю «Несоответствие типа: не может конвертировать из Point2D Т», который глупо, потому что T определяется как класс, который расширяет Point2D
Благодаря
Общий метод параметризуется, когда он * называется *. То, что вы пытаетесь сделать, не имеет смысла (рассмотрите такой код: «Node node = new Point2D(); Foo something = copy(); // пытается вызвать« T copy() »с T == Foo '). –