大多数 Collection.removeAll 和 Collection.retainAll 实现的行为更改

在 Java SE 8 之前,如果集合本身为空,那么 Collection.removeAll(Collection)retainAll(Collection) 的大多数实现都会返回 false 并以静默方式忽略空参数。在 Java 8 中,如果将空值提供为参数,那么所有集合实现都会抛出 NullPointerException

为了确定可能发生这些异常的位置,此规则会标记以下实现和接口中 removeAll(Collection)retainAll(Collection) 方法的调用,以便您能够评估逻辑来避免意外的 NullPointerException

将为以下实现来标记 retainAll(Collection) 方法。对于这些实现,removeAll(Collection) 方法在 Java 6 和 Java 7 中便已抛出 NullPointerExceptions

Java 8 没有引入以下集合实现的行为更改,因此该规则不会标记这些实现:

有关 java.util.Collection 接口及其实现的其他信息,请参阅 Interface java.util.Collection Java 文档。