Anterior versiunii Java SE 8, majoritatea implementărilor Collection.removeAll(Collection) şi
retainAll(Collection) returnează false şi ignoră silenţios un parametru null dacă colecţia însăşi
a fost goală. În Java 8, toate implementările de colecţie aruncă o
NullPointerException dacă null este furnizat ca parametru.
Pentru a identifica unde ar putea surveni aceste excepţii, această regulă semnalează invocarea
metodelor removeAll(Collection) şi retainAll(Collection)
în următoarele implementări şi interfeţe, astfel încât să vă puteţi
evalua logica pentru a evita o NullPointerException neaşteptată.
- 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
Metoda retainAll(Collection) este semnalată
pentru următoarele implementări. Pentru acestea, metoda removeAll(Collection)
aruncă întotdeauna o NullPointerExceptions în Java 6 şi Java 7.
- java.util.concurrent.ConcurrentSkipListSet
- java.util.HashSet
- java.util.LinkedHashSet
- java.util.TreeSet
- javax.print.attribute.standard.JobStateReasons
Java 8 nu introduce o modificare de comportament pentru următoarele implementări de colecţie,
deci acestea nu sunt semnalate de această regulă:
- java.beans.beancontext.BeanContextServicesSupport - continuă să arunce
UnsupportedOperationException
- java.beans.beancontext.BeanContextSupport - continuă să arunce
UnsupportedOperationException
- java.util.concurrent.SynchronousQueue - continuă să aibă comportamentul Java 7 şi nu aruncă o
NullPointerException
Pentru informaţii suplimentare despre interfaţa java.util.Collection şi implementările sale, vedeţi
documentaţia Java
Interface java.util.Collection.