Мой класс реализует метод суперкласса, который возвращает List<JComponent>
. Возвращаемый список доступен только для чтения:
public abstract class SuperClass {
public abstract List<JComponent> getComponents();
}
В моем классе я хочу вернуть поле, которое объявлено как List - то есть подсписок:
public class SubClass extends SuperClass {
private List<JButton> buttons;
public List<JComponent> getComponents() {
return buttons;
}
}
Это приводит к ошибке компилятора, так как List<JButton>
не является подтипом List<JComponent>
.
Я могу понять, почему он не компилируется, так как нельзя допускать добавление JTextField в список JButtons.
Однако, поскольку список только для чтения, «концептуально» это должно быть разрешено. Но, разумеется, компилятор не знает, что он доступен только для чтения.
Есть ли способ достичь того, чего я хочу достичь, не изменяя объявление метода в суперклассе и объявление поля в подклассе?
Спасибо,
Calum