1. Обзор
В этом руководстве мы рассмотрим различные способы использования логического
класса Java для преобразования String
в логическое значение
.
2. Булево значение.parseBoolean()
Boolean.parseBoolean()
позволяет нам передать строку
и получить примитивное логическое значение
.
Во-первых, давайте напишем тест, чтобы увидеть, как parseBoolean()
преобразует строку
со значением true:
assertThat(Boolean.parseBoolean("true")).isTrue();
Конечно, тест проходит.
На самом деле, семантика parseBoolean()
настолько ясна, что IntelliJ IDEA предупреждает нас, что передача строкового литерала «true»
избыточна.
Другими словами, этот метод отлично подходит для преобразования String
в логическое значение
.
3. Булево значение.valueOf()
Boolean.valueOf()
также позволяет нам передавать String
, но этот метод возвращает экземпляр класса Boolean
вместо примитивного boolean
.
Мы видим, что этот метод также преуспевает в преобразовании нашей строки:
assertThat(Boolean.valueOf("true")).isTrue();
Этот метод фактически использует parseBoolean()
для преобразования строки
в фоновом режиме и просто использует результат для возврата статически определенного логического
экземпляра.
Следовательно, этот метод следует использовать только в том случае, если требуется возвращаемый логический
экземпляр. Если нужен только примитивный результат, более эффективно использовать parseBoolean()
напрямую.
4. Логическое.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
, важно помнить, что Boolean.getBoolean()
этого не делает.
Исходный код со всеми примерами из этого руководства можно найти на Github .