【发布时间】:2015-05-13 17:29:13
【问题描述】:
我在我的代码库中遇到了一个错误,我已将范围缩小到导致此行为的原因。第一个测试用例失败,而后两个成功。
@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,据我所知 @ 987654328@ 不是有效的primitive 类型。
我已经从Apache Commons 开始使用BooleanUtils,我在这里提出这个问题是为了更好地理解为什么会出现这种行为。
【问题讨论】: