gpt4 book ai didi

java - 依赖父类(super class)抛出异常

转载 作者:行者123 更新时间:2023-11-30 04:01:16 26 4
gpt4 key购买 nike

我正在用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 中添加/重复异常处理逻辑。然而,这会带来代码重复的问题。所以我有两个选择。

  1. 信任 super 类吗?

  2. 代码重复?

鉴于 Composition 不是一个选项,这里要做什么的常见/最佳实践等是什么。

最佳答案

如果你真的不能 Compose,而且我不确定为什么你不能,我说相信 super 类。特别是考虑到这是一个 Java API 类。

  • 为所有经验丰富的开发人员所熟知
  • 契约(Contract)极不可能改变

在我看来,重复的代码几乎总是最糟糕的选择。在与此类似的情况下,我认为争论的唯一原因是,如果您扩展的类是一个实现不佳的类,并且您试图向外界隐藏它的问题,或者它抛出了您真正不知道的异常不想耦合。

关于java - 依赖父类(super class)抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com