Boolean.TRUE == myBoolean против Boolean.TRUE.equals(myBoolean)
Есть ли когда-нибудь ситуация, когда использование equals(Boolean)
а также ==
будет иметь разные результаты при работе с Boolean
объекты?
Boolean.TRUE == myBoolean;
Boolean.TRUE.equals(myBoolean);
Я не думаю о примитивных типах здесь, просто булевых объектах.
4 ответа
Как насчет:
System.out.println(new Boolean(true) == new Boolean(true));
System.out.println(new Boolean(true) == Boolean.TRUE);
(оба печатают false по той же причине, что и любой другой тип объектов).
Было бы опасно использовать ==
так как myBoolean
возможно, не произошел от одной из констант, но был построен как new Boolean(boolValue)
, в таком случае ==
всегда приведет к false
, Вы можете использовать только
myBoolean.booleanValue()
ни с одним ==
ни equals
участвует, давая надежные результаты. Если вы должны обслуживать null
-значит так же, тогда нет ничего лучше твоего equals
подход.
if(Boolean.TRUE == new Boolean(true)){
System.out.println("==");
}
if(Boolean.TRUE.equals(myBoolean)){
System.out.println("equals");;
}
В этом случае первый ложный. Только второе, если условие верно. Печать:
equals
==
работает только для примитивных типов
когда вы сравниваете объекты, вы всегда должны использовать o.equls(Object ob)