У меня два интерфейса, HasClickHandlers
и DoesFancyFeedback
.Затем у меня есть несколько объектов пользовательского интерфейса, которые реализуют оба интерфейса - например, Button
, который реализует оба, имеет обработчики кликов, а также имеет причудливую обратную связь.
В моем коде, который объявляет Button
s, я нена самом деле я хочу сказать Button
, потому что, может быть, позже я захочу, чтобы он был, я не знаю, Image
, который имеет обработчики щелчков и делает фантастическую обратную связь.Поэтому вместо того, чтобы быть конкретным и говорить что-то вроде:
Button saveButton = aButtonIPassedIn;
saveButton.addClickHandler();
saveButton.doFancyFeedback();
Я хочу сказать,
{HasClickHandlers + DoesFancyFeedback} clickyFeedbackThing = aThingIPassedIn;
clickyFeedbackThing.addClickHandler();
clickyFeedbackThing.doFancyFeedback();
Я хочу, чтобы компилятор потребовал, чтобы aThingIPassedIn
реализовал оба HasClickHandlers
и DoesFancyFeedback
.
Я мог бы создать интерфейс, расширяющий эти два интерфейса , и использовать его.Есть ли более простой / менее многословный способ?