Java接口中的可选方法

jam*_*mes 20 java android interface

我有一个带有几个方法定义的接口,我想要它们中的一些.

这可能吗?如果是的话,我该如何实现呢?

我试过设置一个注释,@Optional但这似乎不起作用.

我是否必须在Optional某处定义注释?

Eri*_*ass 22

@OptionalJava中没有注释.您可以做的一件事是创建一个接口,然后创建一个提供存根实现的抽象类.然后,您的类可以扩展此基类并覆盖它们感兴趣的方法.


Dan*_*ish 14

您可以拥有一个Abstract类,该类使用空函数实现实现此接口,然后从Abstract类扩展

话虽如此,我会质疑为什么你需要这样做.也许您需要将界面拆分为多个较小的界面并实现您所需的唯一一个类

  • 一个例子是`java.awt.event.MouseAdapter` (2认同)

JB *_*zet 8

虽然我同意其他答案,但应该注意JDK中存在这样的可选方法.例如,List.add()是可选的.如果实现不想实现此方法,则必须抛出UnsupportedOperationException.

如果您想知道是否实现了可选方法,那么您可以添加另一个方法(不是可选的):

/**
 * Returns true if optionalOperation() is supported and implemented, false otherwise
 */
boolean isOptionalOperationSupported();

/**
 * implements he foobar operation. Optional. If not supported, this method must throw
 * UnsupportedOperationException, and isOptionalOperationSupported() must return false.
 */
void optionalOperation();
Run Code Online (Sandbox Code Playgroud)