为什么在List接口中只有add(int index,E元素)返回void,而其他所有add方法都返回boolean



不要误解我的意思-我理解为什么从Collection派生的add方法必须返回布尔值,我只是不明白为什么这一个方法不一致-addAll都返回布尔值——即使其中一个不必返回。

集合方法也涵盖集合。对于集合,任何时候添加到其中都可能无效,因为集合不能包含重复项。因此,布尔值用于指示该方法是否真的更改了集合。

通常,此类Collection方法返回布尔值,以指示该方法调用是否实际修改了集合。

这不适用于List方法add(index, element)。任何阻止将元素添加到指定索引处的列表的操作都将指示错误,因此会引发异常。

Collection的JavaDoc说,如果集合已更改,add(E element)将返回true。由于有些集合不支持重复项,因此在添加集合中已存在的元素时,这些集合不会更改。

另一方面,List支持重复的元素。List的JavaDoc说,add(int index, E element)将任何后续元素向右移动(在其索引中添加一个(。这意味着,每次调用add(int index, E element)时,列表都会发生更改。

布尔返回值可以帮助您捕捉给它一个空列表的情况。add方法将始终更改您的列表,因此返回值将始终为true。

最新更新