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