Хороший способ проверить, не содержит ли множество элементов null

У меня есть метод, которому дано множество объектов. Метод, которому он делегируется, требует, чтобы Set не содержал нулевых элементов. Я хотел бы проверить предусловие, что Set не содержит нулевых элементов, заранее, в методе перед делегированием. Очевидный код для этого следующий:

public void scan(Set plugIns) {
   if (plugIns == null) {
      throw new NullPointerException("plugIns");
   } else if (plugIns.contains(null)) {
      throw new NullPointerException("plugIns null element");
   }
   // Body
 }

Но это неправильно, потому что Set.contains() может выбросить NullPointerException, если реализация Set сама не допускает нулевых элементов. Перехват и игнорирование NullPointerException в этом случае будет работать но будет неэлегантно. Есть ли изящный способ проверить это предусловие?


Нет ли недостатка в интерфейсе Set? Если реализация Set никогда не может содержать null, почему бы вместо этого не потребовать, чтобы Set.contains(null) всегда возвращала false? Или иметь предикат isNullElementPermitted()?

6
задан Community 23 May 2017 в 12:30
поделиться