Я наткнулся на ошибку в API коллекций Java, в Collections.java.
Вот дословный код из источника JDK. Просто чтобы вы знали, тег версии JavaDoc читается как «1.106, 21.04.06». Метод находится в строке 638.
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
Если вы потратите секунду на анализ метода, вы быстро обнаружите ошибку: T-кандидат = i.next(). О! Вызов i.next() на итераторе без предварительной проверки hasNext()? Это просто просьба об исключении.
Наверняка что-то подобное должно было быть замечено во время кодирования? Это означает, что использование API должно проверять наличие в коллекции по крайней мере двух элементов.