我在java中扩展列表,但我不确定如何处理异常。
class InfiniteList extends ArrayList<Integer> {
InfiniteList(int size) {
super(size);
// if (size < 0) throw new IllegalArgumentException("The size should not be less than zero.");
add(size);
}
在这里,我知道截至目前,如果size为负,则ArrayList构造函数会抛出异常。 我的子类实现需要完全相同的行为。 到目前为止世界是好的。
现在稍后有人来并更改ArrayList以接受负值,我的InfiniteList
失败。
所以我的解决方案是在InfiniteList
中添加/复制异常处理逻辑。然而,这伴随着代码重复的问题。所以我有两个选择。
相信超级班吗?
重复代码?
这里有什么共同/最佳实践等,因为Composition
不是一个选项。
答案 0 :(得分:2)
如果你真的不能写,我不知道为什么你不能,我说信任超级班。特别是考虑到这是一个Java API类。
重复代码几乎总是IMO最糟糕的选择。在类似的情况下,我可以看到争论它的唯一原因是,如果你正在扩展一个实施不好的类的类,你试图向外界隐藏它的问题,或者如果它抛出了你真正不喜欢的异常我想加入。