Avant la version Java SE 8, la plupart des implémentations de Collection.removeAll(Collection) et de
retainAll(Collection) renvoyaient la valeur false et ignoraient un paramètre de type null lorsque la collection
elle-même était vide. Dans Java 8, toutes les implémentations de collection émettent une exception
NullPointerException si la valeur null est fournie en tant que paramètre.
Pour identifier l'emplacement de ces exceptions, cette règle marque l'appel des méthodes
removeAll(Collection) et retainAll(Collection) dans les interfaces
et les implémentations suivantes, de telle sorte que vous puissiez évaluer votre logique afin
d'éviter une exception NullPointerException inattendue.
- 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
La méthode retainAll(Collection) est marquée pour les
implémentations suivantes. Dans ce cas, la méthode removeAll(Collection) émet toujours
une exception NullPointerExceptions dans Java 6 et Java 7.
- java.util.concurrent.ConcurrentSkipListSet
- java.util.HashSet
- java.util.LinkedHashSet
- java.util.TreeSet
- javax.print.attribute.standard.JobStateReasons
Java 8 n'inclut pas de changement de comportement pour les implémentations de collection suivantes. Elles ne sont donc pas
marquées par cette règle :
- java.beans.beancontext.BeanContextServicesSupport - continue d'émettre l'exception
UnsupportedOperationException
- java.beans.beancontext.BeanContextSupport - continue d'émettre l'exception
UnsupportedOperationException
- java.util.concurrent.SynchronousQueue - continue d'avoir le comportement Java 7 et m'émet pas d'exception
NullPointerException
Pour plus d'informations sur l'interface java.util.Collection et ses implémentations, voir la documentation Java
Interface java.util.Collection.