1. Общ преглед
В този урок ще изследваме различните начини, по които можем да използваме булевия клас на Java, за да преобразуваме String в булев .
2. Boolean.parseBoolean ()
Boolean.parseBoolean () ни позволява да преминем в String и да получим примитивен boolean .
Първо, нека напишем тест, за да видим как parseBoolean () преобразува String със стойността true:
assertThat(Boolean.parseBoolean("true")).isTrue();
Разбира се, тестът преминава.
Всъщност семантиката на parseBoolean () е толкова ясна, че IntelliJ IDEA ни предупреждава, че предаването на низовия литерал „true“ е излишно.
С други думи, този метод е отличен за превръщане на String в булева стойност .
3. Boolean.valueOf ()
Boolean.valueOf () също ни позволява да преминем в низ , но този метод връща екземпляр на булев клас вместо примитивен булев .
Можем да видим, че този метод също успява да преобразува нашия String:
assertThat(Boolean.valueOf("true")).isTrue();
Този метод всъщност използва parseBoolean (), за да направи преобразуването на String във фонов режим и просто използва резултата, за да върне статично дефиниран булев екземпляр.
Следователно този метод трябва да се използва само ако е необходим върнатият булев екземпляр. Ако е необходим само примитивен резултат, по-ефективно е да се придържате директно към използването на parseBoolean () .
4. Boolean.getBoolean ()
Boolean.getBoolean () е трети метод, който приема String и връща boolean .
Без да разглеждаме документацията или изпълнението на този метод, може разумно да предположим, че този метод е и за преобразуване на неговия аргумент String в булева стойност:
assertThat(Boolean.getBoolean("true")).isTrue(); // this test fails!
Причината, поради която този тест е неуспешен, е, че аргументът String трябва да представлява името на логическо системно свойство.
Чрез дефиниране на системното свойство:
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 () и valueOf () , така преобразуване на низ в булев , че е важно да се помни, че Boolean.getBoolean () не го прави.
Изходният код с всички примери в този урок може да бъде намерен в Github.