«1. Обзор

В этом руководстве мы рассмотрим различные способы использования логического класса Java для преобразования строки в логическое значение.

2. Boolean.parseBoolean()

Boolean.parseBoolean() позволяет нам передать строку и получить примитивное логическое значение.

Во-первых, давайте напишем тест, чтобы увидеть, как parseBoolean() преобразует строку со значением true:

assertThat(Boolean.parseBoolean("true")).isTrue();

Конечно, тест проходит.

На самом деле, семантика parseBoolean() настолько ясна, что IntelliJ IDEA предупреждает нас, что передача строкового литерала «true» является избыточной.

Другими словами, этот метод отлично подходит для преобразования строки в логическое значение.

3. Boolean.valueOf()

Boolean.valueOf() также позволяет передать строку, но этот метод возвращает экземпляр класса Boolean вместо примитивного логического значения.

Мы видим, что этот метод также преуспевает в преобразовании нашей строки:

assertThat(Boolean.valueOf("true")).isTrue();

Этот метод фактически использует parseBoolean() для преобразования строки в фоновом режиме и просто использует результат для возврата статически определенного логического экземпляра. .

Таким образом, этот метод следует использовать только в том случае, если требуется возвращаемый логический экземпляр. Если нужен только примитивный результат, более эффективно использовать parseBoolean() напрямую.

4. Boolean.getBoolean()

Boolean.getBoolean() — это третий метод, который принимает строку и возвращает логическое значение.

Не глядя на документацию или реализацию этого метода, можно разумно предположить, что этот метод также предназначен для преобразования аргумента String в логическое значение:

assertThat(Boolean.getBoolean("true")).isTrue(); // this test fails!

Причина, по которой этот тест не проходит, заключается в том, что аргумент String должен представлять имя логического системного свойства.

Путем определения системного свойства:

System.setProperty("CODING_IS_FUN", "true");
assertThat(Boolean.getBoolean("CODING_IS_FUN")).isTrue();

Наконец, тест проходит. Проверка реализации этого метода показывает, что он также использует метод parseBoolean() для преобразования строки.

Обратите внимание, что getBoolean() буквально является сокращением для parseBoolean(System.getProperty(“true”)), что означает, что нас не должно вводить в заблуждение название.

Таким образом, единственный способ Boolean.getBoolean(“true”); всегда будет возвращать true, если существует системное свойство с именем «true» и его значение анализируется как true.

4. Заключение

В этом кратком руководстве мы рассмотрели ключевые различия между Boolean.parseBoolean(), Boolean.valueOf() и Boolean.getBoolean().

Хотя и parseBoolean(), и valueOf() преобразуют String в логическое значение, важно помнить, что Boolean.getBoolean() этого не делает.

Исходный код со всеми примерами из этого руководства можно найти на Github.