У меня есть два интерфейса: 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
.
Я мог бы создать интерфейс, расширяющий эти два интерфейса, и использовать его. Есть ли более простой/менее подробный способ?