![](/img/trans.png)
[英]Java interface throws an exception but interface implementation does not throw an exception?
[英]Methods not applicable for the implementation of an interface: throw Exception or ignore silently?
我目前正在实现一个相当大的接口,其中一些方法不适用于实现。
我应该做类似的事情:
/**
* @throws UnsupportedOperationException always. This method is not applicable.
*/
public void fooMethod() {
throw new UnsupportedOperationException("This method is not applicable for this implementation.");
}
或者只是默默地忽略它,什么都不做:
public void fooMethod() {
}
前一种方式会提醒该类的用户它没有执行接口提供的部分内容,但可能会与使用该类作为替代品的遗留代码发生冲突(尽管不是这样) )。
对此有一般规则吗?
我认为这完全取决于方法定义的合同。
例如,如果“List”实现不支持“remove”,则应抛出异常以指示此行为已丢失,因为客户端依赖于预期结果。
如果该功能在合同中所说的意义上是可选的,例如“此方法应该通知用户正在进行的活动”,那么您可以自由地进行虚拟实现。
绝对会抛出UnsupportedOperationException
。 除非该方法是一种“提示”方法,否则我无法看到默默失败的任何好处。
如果您可以重构您的界面并将其拆分一点,那可能会更清晰 - 但我理解使用遗留代码库这可能是不可行的。
UnsupportedOperationException更好。 否则客户端代码无法区分该方法是否可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.