Я нашел этот фрагмент кода в Google Guava Github , и я не могу понять, почему в 5-й строке метод rowMap
не возвращает void, если выполняется условие:
private transient @MonotonicNonNull Map<R, Map<C, V>> rowMap;
public Map<R, Map<C, V>> rowMap() {
Map<R, Map<C, V>> result = rowMap;
return (result == null) ? rowMap = createRowMap() : result;
}
Map<R, Map<C, V>> createRowMap() {
return new RowMap();
}
Разве эта строка не будет эквивалентна:
if (result == null) {
return rowMap = createRowMap();
} else {
return result;
}
И тогда присвоение rowMap вернет void.Что я пропустил?