Java SE 8 이전에서, Collection.removeAll(Collection) 및
retainAll(Collection)의 대부분의 구현에서는 콜렉션 자체가 비어 있는 경우
false를 리턴하고 널 매개변수를 자동으로 무시합니다. Java 8에서, 널이 매개변수로 제공되는 경우 모든 콜렉션 구현에
NullPointerException이 발생합니다.
이러한 예외가 발생할 수 있는 위치를 식별하기 위해 이 규칙은 다음 구현 및 인터페이스에서
removeAll(Collection) 및 retainAll(Collection)
메소드의 호출에 플래그를 지정해서,
로직을 평가하여 예상치 못한 NullPointerException을 막을 수 있도록 합니다.
- 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
retainAll(Collection) 메소드는
다음 구현에 대해 플래그가 지정됩니다. 이에 대해 removeAll(Collection) 메소드는
Java 6 및 Java 7에서 NullPointerExceptions가 이미 발생합니다.
- java.util.concurrent.ConcurrentSkipListSet
- java.util.HashSet
- java.util.LinkedHashSet
- java.util.TreeSet
- javax.print.attribute.standard.JobStateReasons
Java 8에서 다음 콜렉션 구현에 대해 동작 변경을 소개하지 않아서,
이 규칙으로 플래그가 지정되지 않습니다.
- java.beans.beancontext.BeanContextServicesSupport - 계속해서
UnsupportedOperationException 발생
- java.beans.beancontext.BeanContextSupport - 계속해서
UnsupportedOperationException 발생
- java.util.concurrent.SynchronousQueue - 계속해서 Java 7 동작을 포함하고
NullPointerException이 발생하지 않음
java.util.Collection 인터페이스 및 해당 구현에 대한 추가 정보는
Interface java.util.Collection Java 문서를 참조하십시오.