Я столкнулся с ошибкой в моей кодовой базе, я сузился к тому, что вызвало это поведение. Первый тестовый пример не выполняется, тогда как последние два успеха.
@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));
}
Я знаю, что Boolean.valueOf - это перегруженный метод с двумя вариантами, который принимает String, а другой принимает примитив типа boolean.
Я подозреваю, что это происходит из-за автоматического бокса, но я не уверен, что это так, кроме того, я не знаю, почему null преобразуется в boolean, насколько я знаю null не является допустимым типом primitive.
Я перешел к использованию BooleanUtils из Apache Commons, я попросил это здесь, чтобы лучше понять, почему поведение такое.