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