Ich habe einen Fehler in meiner Codebasis festgestellt, ich habe darauf beschränkt, was dieses Verhalten verursacht. Der erste Testfall schlägt fehl, während die letzten beiden erfolgreich sind.Ist null in Java
@Test
public void testBooleanNull1() {
Boolean nullB = null;
assertFalse(Boolean.valueOf(nullB));
}
@Test
public void testBooleanNull2() {
String nullS = null;
assertFalse(Boolean.valueOf(nullS));
}
@Test
public void testBooleanNull3() {
assertFalse(Boolean.valueOf(null));
}
Ich weiß, dass Boolean.valueOf
eine überladene Methode mit zwei Varianten ist man ein String
nimmt und der andere nimmt eine primitive vom Typ boolean
.
Ich vermute, dass dies wegen der Auto-Box geschieht, aber ich bin mir nicht sicher, ob das der Fall ist, außerdem weiß ich nicht, warum null
wird bis zu einem Boolean
umgewandelt werden, wie ich weiß null
ist keine Gültig primitive
Typ.
Ich habe weiter mit der Verwendung BooleanUtils
von Apache Commons
, ich fragte dies hier, um besser zu verstehen, warum das Verhalten auf diese Weise ist.
siehe auch http://stackoverflow.com/questions/2707322/what-is-null-in-java – cymatist