通过Java Collections Framework查看,我注意到相当多的接口都带有comment (optional operation)
。这些方法允许类只通过UnsupportedOperationException
不想实现的方法来实现。
这方面的一个示例是中的addAll
方法Set Interface
。
现在,如本系列问题所述,接口是使用预期的定义合同。
接口很重要,因为它们将类的工作与工作方式分开。合同规定了客户的期望,使开发人员可以自由选择自己选择的方式实施合同,只要他们遵守合同即可。
和
界面是对对象可以执行的操作的描述……例如,当您打开电灯开关时,电灯就亮了,您不在乎如何做,只是它确实在做。在面向对象的程序设计中,接口是对象成为“ X”所必须具有的所有功能的描述。
和
我认为基于接口的方法要好得多。然后,您可以很好地模拟您的依赖关系,并且基本上所有事物之间的耦合都不太紧密。
鉴于接口的目的是定义一个契约并使您的依赖关系松散耦合,是否有些方法不能UnsupportedOperationException
达到目的?这意味着我不能再通过了Set
,只能使用addAll
。相反,我必须知道Set
我通过了什么实现,所以我可以知道是否可以使用addAll
。对我来说,这似乎毫无价值。
那有什么意义UnsupportedOperationException
呢?它只是在弥补遗留代码,并且需要清理其接口吗?还是我错过了更有意义的目的?
addAll
在中定义HashSet
。它推迟到默认的实现AbstractCollection
大多数肯定是不能丢UnsupportedOperationException
。