(Linked)BlockingQueue.put(null) throws NullPointerException

Я проверил реализацию, она делает это намеренно

 public void put(E e) throws InterruptedException {
     if (e == null) throw new NullPointerException();

Этот сюрприз не удобен для пользователя (который хочет, например, таким образом сигнализировать об окончании потока) и нарушает общий контракт с коллекциями, которые легко принимают нулевые элементы. В чем смысл BlockingQueue различать нулевые элементы? Если нули так плохи, может быть, нам вообще следует воздержаться от их использования и применить этот минимум в JLS?

11
задан Val 31 May 2012 в 09:13
поделиться