Изменение поведения большинства реализаций методов Collection.removeAll и Collection.retainAll

До Java 8 большинство реализаций методов Collection.removeAll(Collection) и retainAll(Collection) возвращало false и игнорировало значение null в параметре, если сама коллекция пустая. В Java 8 все реализации коллекций выбрасывают NullPointerException, если передается null в параметре.

Для того чтобы определить места, где могут возникнуть эти исключительные ситуации, данное правило помечает вызовы методов removeAll(Collection) и retainAll(Collection) в следующих реализациях и интерфейсах, чтобы упростить проверку логики и предотвратить неожиданные NullPointerException.

Метод retainAll(Collection) помечается в следующих реализациях. В них метод removeAll(Collection) уже выбрасывает NullPointerException в Java 6 и Java 7.

В следующих реализациях коллекций сохранено прежнее поведение в Java 8, поэтому это правило их не помечает:

Дополнительная информация об интерфейсе java.util.Collection и его реализациях приведена в документации Java по Interface java.util.Collection.