Подтвердить что ты не робот

GetBoolean (String str) и valueOf (String str) из булева класса дают разные результаты

Я с удивлением понимаю, что метод getBoolean() и valueOf() возвращает разные результаты для одной и той же входной строки.

Я попытался передать "true" оба метода. Но getBoolean() дает мне ложный вывод, тогда как valueOf() дает правильный результат, который является истинным. Почему?

4b9b3361

Ответ 1

                        &nbsp                     ваш друг.

  • Boolean.getBoolean, вероятно, не делает то, что вы думаете:

    Возвращает true тогда и только тогда, когда существует системное свойство, названное аргументом, и равно строке "истинный".


  • Boolean.valueOf - это, вероятно, то, что вы ищете:

    Возвращаемое значение Boolean представляет значение true, если строковый аргумент не равен null и равен, игнорируя регистр, строке "true".

Ответ 2

javadoc getBoolean четко заявляет, что он ищет свойства системы. Значение, которое вы передаете ему, - это имя системного свойства, а не строка "true" или "false".

Например, `var b = Boolean.getBoolean( "some.property" );

Ответ 3

Я тоже нашел эту проблему недавно при использовании Boolean.getBoolean(). Кроме того, если вы хотите иметь нулевую проверку, вы можете использовать Boolean.parseBoolean, которая вернет false в случае nulls

Ответ 4

class Boo1
{    
    public static void main(String[] args)
    {    
       System.setProperty("true","true");
       System.setProperty("false","true");

       boolean d=Boolean.getBoolean("true");

       System.out.println(d);   
   }
}