Antes de la aparición de Java SE 8, la mayoría de las implementaciones de
Collection.removeAll(Collection) y
retainAll(Collection) devolvían un valor false y pasaban por alto
la existencia de un parámetro nulo cuando la colección propiamente dicha estaba
vacía. En Java 8, todas las implementaciones de colección emiten una excepción
NullPointerException si se proporciona un parámetro nulo.
Para identificar dónde se pueden producir estas excepciones, esta regla señala
la invocación de los métodos
removeAll(Collection) y retainAll(Collection)
en las implementaciones e interfaces siguientes para que pueda evaluar la
lógica de programación y evitar excepciones NullPointerException
inesperadas.
- java.util.ArrayDeque
- java.util.ArrayList
- java.util.Collection
- java.util.Deque
- java.util.EnumSet
- java.util.LinkedList
- java.util.List
- java.util.NavigableSet
- java.util.PriorityQueue
- java.util.PriorityQueue
- java.util.Queue
- java.util.Set
- java.util.SortedSet
- java.util.Stack
- java.util.Vector
- java.util.concurrent.ArrayBlockingQueue
- java.util.concurrent.BlockingDeque
- java.util.concurrent.BlockingQueue
- java.util.concurrent.ConcurrentLinkedDeque
- java.util.concurrent.ConcurrentLinkedQueue
- java.util.concurrent.CopyOnWriteArrayList
- java.util.concurrent.CopyOnWriteArraySet
- java.util.concurrent.DelayQueue
- java.util.concurrent.LinkedBlockingDeque
- java.util.concurrent.LinkedBlockingQueue
- java.util.concurrent.LinkedTransferQueue
- java.util.concurrent.PriorityBlockingQueue
- java.util.concurrent.TransferQueue
- javax.management.AttributeList
- javax.management.relation.RoleList
- javax.management.relation.RoleList
- javax.management.relation.RoleUnresolvedList
El método retainAll(Collection) se señaliza para las
implementaciones siguientes. Para estas implementaciones, el método removeAll(Collection) ya
emite una excepción NullPointerException en Java 6 y Java 7.
- java.util.concurrent.ConcurrentSkipListSet
- java.util.HashSet
- java.util.LinkedHashSet
- java.util.TreeSet
- javax.print.attribute.standard.JobStateReasons
Java 8 no incorpora un cambio de comportamiento para las implementaciones de
colección siguientes, por lo que no son señalizadas por esta regla:
- java.beans.beancontext.BeanContextServicesSupport - sigue emitiendo la
excepción
UnsupportedOperationException
- java.beans.beancontext.BeanContextSupport - sigue emitiendo la excepción
UnsupportedOperationException
- java.util.concurrent.SynchronousQueue - sigue teniendo el comportamiento de
Java 7 y no emite una excepción
NullPointerException
Para obtener más información sobre la interfaz
java.util.Collection y sus implementaciones, consulte la
documentación de Java
Interface java.util.Collection.