Подтвердить что ты не робот

Почему org.apache.commons.lang.BooleanUtils.isTrue(Boolean bool) использует тернарный оператор?

I F3'd в это без особой причины, и был удивлен, увидев, что этот метод реализован следующим образом:

public static boolean isTrue(Boolean bool) {
        if (bool == null) {
            return false;
        }
        return bool.booleanValue() ? true : false;
    }

Почему бы и нет?

public static boolean isTrue(Boolean bool) {
        if (bool == null) {
            return false;
        }
        return bool.booleanValue();
    }

Это не имеет большого значения, поэтому я подумал, есть ли для этого какая-то польза? Читаемость является достаточно слабым аргументом, я считаю, что это шум. Если нет какой-то другой пользы, которой я не хватает.

4b9b3361

Ответ 1

Я не могу найти оправданной причины.

Спецификация API для Java говорит:

public boolean booleanValue()

Возвращает значение этого Boolean-объекта в виде булева примитива.

Итак, если наш объект bool:

Boolean bool = new Boolean(true);

Это эквивалентно:

bool.booleanValue() == true;

Тройной компаратор здесь избыточен и уменьшает читаемость.

Ответ 2

Конечно, в вашем коде у вас одна атомная операция меньше. См. Это для хорошего объяснения: fooobar.com/questions/534057/...

Ответ 3

Я не думаю, что есть окончательный ответ на то, почему он написал так, поскольку Фелипе Фернандес указывает на отсутствие функциональных причин для этого.

Однако, я предполагаю, что это сделано, чтобы сделать метод симметричным с другими в том же классе, возвращающим объекты Boolean, такие как toBooleanObject

public static Boolean toBooleanObject(boolean bool) {
        return bool ? Boolean.TRUE : Boolean.FALSE;
}