Java的boolean允许值true,并false同时允许布尔值true,false和null.我已经开始将我的booleans 转换为Booleans.这可能导致测试中的崩溃,例如
Boolean set = null;
...
if (set) ...
Run Code Online (Sandbox Code Playgroud)
而考试
if (set != null && set) ...
Run Code Online (Sandbox Code Playgroud)
看似人为,容易出错.
如果有的话,使用Boolean带空值的s 是否有用?如果从来没有,那么被包裹物体的主要优点是什么?
更新:有很多有价值的答案,我在自己的答案中总结了一些.我充其量是Java的中间人,所以我试图展示我发现有用的东西.请注意,问题是"错误的措辞"(布尔值不能"具有空值"),但我已经离开它以防其他人有相同的误解
来自 java 文档 Map
返回指定键映射到的值,如果此映射不包含键的映射,则返回 null。
但是下面的代码正在抛出Null Pointer exception.
public class Main {
public static void main(String args[]) throws Exception {
boolean bool = false;
Map<String, Boolean> map = new HashMap<>();
boolean r = bool ? false : map.get("a");
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解这种行为吗?