Вызов абстрактного метода из группы абстрактных подклассов

Я создаю абстрактный класс GUIClickableObject, расширяющий класс GUIObject с помощью абстрактного метода public void onClick(). Когда я создаю новый подкласс, расширяющий GUIClickableObject, я создаю экземпляр абстрактного метода onClick() в зависимости от действия объекта Clickable.

У меня есть позиция моей мыши и позиция объекта, поэтому я могу легко найти его, но мне нужно создать функцию поиска, которая просматривает мои объекты GUIClickable, а затем вызывает их метод onClick(), если мышь щелкает и отпускает объект.

  • а) создать ArrayList/Array/Group, который содержит различные подклассы объекта GUIClickable,
  • б) перебрать их и в) затем вызвать абстрактный метод onClick()?

Очевидно, я не могу просто создать ArrayList из GUIClickableObjects и вставить в него свои подклассы, верно?


person Water_SS    schedule 11.11.2013    source источник
comment
Опубликуйте соответствующую часть (части) вашего кода.   -  person PM 77-1    schedule 12.11.2013


Ответы (2)


Я думаю, что вы хотите, это обобщенный список

List<? extends GUIClickableObjects> gcos = new ArrayList<? extends GUIClickableObject>();

Теперь вы можете добавить любой подкласс GUIClickableObject.

person MadConan    schedule 11.11.2013

Очевидно, я не могу просто создать ArrayList из GUIClickableObjects и вставить в него свои подклассы, верно?

Почему это так. вы должны иметь возможность создать список массивов, который будет принимать объекты подкласса для GUIClickableObjects. Если вы хотите специально проверить, принадлежит ли объект к какому подклассу, вы можете просто выполнить проверку «экземпляр»

Как проверить, подкласс является экземпляром класса во время выполнения?

Более того, пожалуйста, уточните, о чем вы думаете или с чем столкнулись.

person Acewin    schedule 11.11.2013