AbstractCollection类中的Add()方法

时间:2015-08-17 13:10:43

标签: java collections return

这是AbstractCollection<E>类的一部分:

public boolean addAllm(Collection<? extends E> c) {
    boolean modified = false;
    for (E e : c)
        if (add(e))
            modified = true;
    return modified;
}
public boolean add(E e) {
    throw new UnsupportedOperationException();
}

当方法add(E e)返回值“false”并因此addAll方法返回“false”时是否存在任何情况?

顺便说一句,我总是认为当一个方法属于任何类型时,它应该包含return语句(除了“void”)。所以,我的下一个问题是:

当java中的方法返回一种类型的值而不使用上面示例中的语句returnthrow new ...Exception()时,还有其他任何情况吗?

对不起我的英语,如果不清楚的话......

2 个答案:

答案 0 :(得分:1)

这是一个抽象类。

如果您使用所提供的add方法(直接或通过addAll),则只会使用UnsupportedOperationException失败。

子类将希望提供自己的add方法(实际上做了一些有用的事情)。

这些应该返回truefalse,具体取决于是否添加了元素(例如,Set不允许重复)。

对于通常的方法返回值,编译器确保方法始终返回声明的返回类型的值(或返回没有void方法的值)或抛出异常。它不会让你拥有可以在没有它的情况下结束的方法(*)

(*)你可以拥有根本没有结束的方法......

答案 1 :(得分:0)

某些集合可能会拒绝插入,例如Set意味着包含唯一元素,并且如果已经包含已添加的元素,则它们将保持不变并返回false。

构造函数有隐式返回,我认为这是退出返回类型与void不同的函数的唯一其他方法。