Я столкнулся с ошибкой в моей кодовой базе, я сузился к тому, что вызвало это поведение. Первый тестовый пример не выполняется, тогда как последние два успеха.
@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
, я попросил это здесь, чтобы лучше понять, почему поведение такое.