У меня есть метод, которому дано множество
объектов. Метод, которому он делегируется, требует, чтобы 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()
?