1. Обзор
В этом уроке мы рассмотрим различные способы использования класса Java Boolean для | преобразования Строки в boolean .
2. Boolean.parseBoolean()
Boolean.parseBoolean() позволяет нам передать строку и получить примитив boolean .
Во-первых, давайте напишем тест, чтобы увидеть, как parseBoolean() преобразует строку со значением true:
assertThat(Boolean.parseBoolean("true")).isTrue();
Конечно, тест проходит.
На самом деле семантика parseBoolean() настолько ясна, что IntelliJ IDEA предупреждает нас, что передача строкового литерала “true” является избыточной.
Другими словами, этот метод отлично подходит для преобразования String в boolean .
3. Boolean.valueOf()
Boolean.valueOf() также позволяет нам передать строку , но этот метод возвращает экземпляр класса Boolean вместо примитива boolean .
Мы видим, что этот метод также успешно преобразует нашу строку :
assertThat(Boolean.valueOf("true")).isTrue();
Этот метод фактически использует parseBoolean() для преобразования String в фоновом режиме и просто использует результат для возврата статически определенного экземпляра Boolean .
Поэтому этот метод следует использовать только в том случае, если требуется возвращаемый экземпляр Boolean . Если требуется только примитивный результат, более эффективно придерживаться прямого использования parseBoolean () .
4. Boolean.getBoolean()
Boolean.getBoolean () – это третий метод, который принимает строку и возвращает boolean .
Не глядя на документацию или реализацию этого метода, можно было бы разумно предположить, что этот метод также предназначен для преобразования его аргумента String в логическое значение :
assertThat(Boolean.getBoolean("true")).isTrue(); // this test fails!
Причина неудачи этого теста заключается в том, что аргумент String должен представлять имя системного свойства boolean .
Определив системное свойство:
System.setProperty("CODING_IS_FUN", "true"); assertThat(Boolean.getBoolean("CODING_IS_FUN")).isTrue();
Наконец, тест проходит. Проверка реализации этого метода показывает, что он также использует метод parseBoolean() для преобразования String .
Обратите внимание, что getBoolean() буквально является ярлыком для parseBoolean(System.getProperty(“true”)), что означает, что мы не должны быть введены в заблуждение именем.
Поэтому единственный способ Boolean.getBoolean(“true”); когда-либо вернет true – это если существует системное свойство с именем “true” и его значение разбирается на true .
4. Заключение
В этом коротком уроке мы рассмотрели ключевые различия между Boolean.parseBoolean() , Boolean.valueOf () и Boolean.getBoolean() .
Пока parseBoolean() и Ценность() оба преобразуют Строка в логический , важно помнить, что Boolean.getBoolean() не.
Исходный код со всеми примерами в этом руководстве можно найти на Github .