Як конвертувати рядковий об'єкт в булевий об'єкт?

Як перетворити об'єкт String в об'єкт Boolean?

Рішення

Спробуйте (в залежності від того, який тип результату ви хочете отримати):

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

Перевага:

  • Булевий: не створює нових екземплярів булевих функцій, тому продуктивність краща (і менше збирання сміття). Він повторно використовує два екземпляри або Boolean.TRUE або Boolean.FALSE.
  • boolean: екземпляр не потрібен, використовується примітивний тип.

Офіційна документація знаходиться в Javadoc.


ОНОВЛЕНО:

Автобокс також може бути використаний, але він має вартість виконання.
Я пропоную використовувати його тільки тоді, коли вам доведеться накладати гіпс, а не тоді, коли гіпсу можна уникнути.

Коментарі (4)

Потрібно бути обережним при використанні методів Boolean.valueOf(string) або Boolean.parseBoolean(string). Це пов'язано з тим, що методи завжди будуть повертати false, якщо рядок String не рівний "true" (регістр ігнорується).

Наприклад:

Boolean.valueOf("YES") -> false

Через таку поведінку я б рекомендував додати якийсь механізм, який би гарантував, що рядок, який має бути перетворений у булевий, відповідає визначеному формату.

Наприклад:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}
Коментарі (3)
Boolean b = Boolean.valueOf(string);

Значення b є істинним, якщо рядок не є нулем і дорівнює true (ігноруючи регістр).

Коментарі (0)