java - Java中指定多个接口(interface)的方式

标签 java inheritance interface

我有两个接口(interface),HasClickHandlersDoesFancyFeedback。然后,我有一些实现这两个接口(interface)的 UI 对象 - 例如,一个实现了这两个接口(interface)的 Button 具有点击处理程序,并且还执行奇特的反馈。

在我声明 Button 的代码中,我实际上不想说 Button 因为也许以后我会想要它,我不知道.一个 Image,具有点击处理程序并提供精美的反馈。因此,与其具体地说,不如说:

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

我想说,

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

我希望编译器要求 aThingIPassedIn 实现 HasClickHandlers DoesFancyFeedback

我可以创建一个扩展这两个接口(interface)的接口(interface),然后使用它。有没有更简单/更简洁的方法?

最佳答案

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

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

请注意两个接口(interface)之间的一个符号。

关于java - Java中指定多个接口(interface)的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4288942/

相关文章:

Python 类继承 AttributeError - 为什么?怎么修?

c# - 从父类(super class)获取字段

sorting - 有没有办法避免对结构 slice 执行完整的 sort.Interface?

Delphi内存管理设计策略: Object or Interface?

java - 无法使用 @Autowired 创建 bean

java - 当扩展 ListView 的 Activity 为 'Launched' 时应用程序崩溃

java - 附加到现有序列文件会覆盖内容

python - 如何在类中声明装饰器来装饰已经装饰的继承方法?

interface - 在 Lazarus/freepascal 中编译缓冲文件流单元时出错

java - Selenium+Firefox 到 Selenium+PhantomJS