ほとんどの Collection.removeAll の実装と Collection.retainAll の実装での振る舞いの変更

Java SE 8 より前では、ほとんどの Collection.removeAll(Collection) の実装と retainAll(Collection) の実装が、そのコレクション自体が空の場合に、false を返して NULL パラメーターを暗黙的に無視します。Java 8 では、NULL がパラメーターとして指定されたら、すべてのコレクションの実装が NullPointerException をスローします。

この規則により、これらの例外がどこで発生する可能性があるかを特定するために、以下の実装やインターフェースでの removeAll(Collection) メソッドと retainAll(Collection) メソッドの呼び出しにフラグを立てることで、予期しない NullPointerException を防ぐためのロジックを評価できるようにします。

以下の実装の場合は、retainAll(Collection) メソッドにフラグが立てられます。これらの場合、removeAll(Collection) メソッドは、Java 6 と Java 7 でも NullPointerExceptions をスローします。

Java 8 では、以下のコレクションの実装では振る舞いの変更がないため、以下の場合にはこの規則によってフラグが立てられることはありません。

java.util.Collection インターフェースとその実装に関する追加情報については、 Interface java.util.Collection に関する Java 資料を参照してください。