在 Java 中指定多个接口的方法

2022-09-04 06:25:19

我有两个接口,和.然后我有一些实现两个接口的UI对象 - 例如,实现两者都有点击处理程序并且还做花哨的反馈。HasClickHandlersDoesFancyFeedbackButton

在我的代码中,我不想真正说,因为也许以后我会希望它是,我不知道。具有单击处理程序并执行花哨反馈的。因此,与其具体地说:”ButtonButtonImage

Button saveButton = aButtonIPassedIn;
saveButton.addClickHandler();
saveButton.doFancyFeedback();

我想说,

{HasClickHandlers + DoesFancyFeedback} clickyFeedbackThing = aThingIPassedIn;
clickyFeedbackThing.addClickHandler();
clickyFeedbackThing.doFancyFeedback();

我希望编译器要求同时实现 .aThingIPassedInHasClickHandlersDoesFancyFeedback

我可以创建一个扩展这两个接口的接口,并使用它。有没有更简单/不那么冗长的方法?


答案 1

我不认为有更好的方法来做你想做的事。我只是想建议你做以下事情。您可以创建接受需要 2 个接口的参数的方法(我们称之为 foo):

<T extends HasClickHandlers & DoesFancyFeedback> void foo(T arg);

请注意 2 个接口之间的一个与号。


答案 2

您可以尝试使用泛型:

public < T extends HashClickHandlers & DoesFancyFeedback > void foo (
        T aThingIPassedIn
    )
{
    aThingIPassedIn.addClickHandler( );
    aThingIPassedIn.doFancyFeedback( );
}

推荐