Пусть я:Дженерики вопрос
public interface Action<S extends Shape> {
public void start(S shape);
}
Почему я получаю следующее?
public <S extends Shape> void performAction(Action<S> action, Shape shape) {
action.start(shape); // error: cannot supply Shape
}
Другими словами, в будущем, я мог бы иметь подклассы Shape
и Action
S, которые работают на них, как:
Action<Rectangle>
Action<Blob>
Я хотел бы иметь единый интерфейс, который может применяться Action
s к набору различных подклассов Shape
.
+1. В исходном коде не было никакой гарантии, что 'shape' был любого типа' action'. –
В этом случае, я думаю, что дженерики только что усложняют ситуацию. – jjnguy
@jjnguy, Согласованные дженерики кажутся ненужными в этом простом случае. –