Я читал книгу и увидел этот код:
public Animal getWinner(List<Animal> animals) {
return animals == null || animals.size() == 0 ? null : animals.get(0);
}
Последнее выражение подходит, так как оно возвращает Animal или null. Однако предыдущее выражение вызывает недоумение, так как это просто логическое выражение.
Я сделал тестовый класс и назвал getWinner(null)
. Он вернул null
. Насколько мне известно, animals == null
будет истинным, выражение замкнется, и я ожидаю, что метод вернет true
вместо null
.
Как эта строка компилируется и даже работает так, как ожидалось?