У меня есть метод, которому присваивается Set
объектов.Метод, которому он делегирует, требует, чтобы Set
не содержал нулевых элементов.Я хотел бы проверить предварительное условие , что Set
не содержит нулевых элементов на ранних этапах, в методе перед делегированием.Очевидный код делает это так:
public void scan(Set<PlugIn> 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
никогда не может содержать ноль, почему бы вместо этого не потребовать Set.contains(null)
, чтобы всегда возвращать false
?Или есть предикат isNullElementPermitted()
?