当前位置:  开发笔记 > 编程语言 > 正文

无法实现的接口方法的正确行为

如何解决《无法实现的接口方法的正确行为》经验,为你挑选了3个好方法。

如果我有一个需要实现接口的类,但该接口上的一个或多个方法在这个特定类的上下文中没有意义,我该怎么办?

例如,假设我正在实现一个适配器模式,我想通过包装一些不可变对象并将其数据作为键/值对公开来创建一个实现java.util.Map的包装类.在这种情况下,put和putAll方法没有意义,因为我无法修改底层对象.所以问题是这些方法应该做什么?



1> Mike Deck..:

任何无法根据接口的语义实现的方法都应该抛出UnsupportedOperationException.



2> Chris Marast..:

这取决于您的商业案例.2个选项:

没做什么.

扔一个UnsupportedOperationException.

使用哪个更有意义.如果你什么也不做,你就不遵守接口的合同.但是,抛出运行时异常会对调用代码造成严重破坏.因此,必须根据您将如何使用该课程做出决定.如果可能,另一种选择是使用更简单或不同的界面.

请注意,Java库在只读集合的特定情况下是异常路由.


下面指出UnsupportedOperationException是java集合框架的一部分.如果你的情况不在收藏中,并且语义困扰你,你可以自己动手NotImplementedException,或者如果你已经在使用公共语言,你可以使用他们的.



3> Jeff B..:

Java提供的只读集合在写入操作期间抛出UnsupportedOperationException已经是一个不幸的设计攻击.集合类应该使用单独的只读和只写接口编写,这些接口都由完整的读写接口继承.然后你知道你得到了什么.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有