Objective-C

OC 中,不能对 NSMutableDictionary 设置 nil,使用 setObject 方式设置 nil 的话,会报错;而通过字面量的方式去设置 nil,可以避免报错。

1
2
3
4
5
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
dic[@"fake_nil"] = nil; // 没报错,dic 无变化
dic[@"fake_nil2"] = [NSNull null]; // 没报错,fake_nil2 设置成功

[dic setObject:nil forKey:@"fake_nil3"]; // 报错

Java

Java 可以对某个 key 设置一个 null 值,不会报错,会影响 map.containsKey 的返回值。

1
2
3
4
5
6
7
8
Map<String, Object> map = new HashMap<String, Object>();
map.put("str", "str");
map.put("fake_null", null);
System.out.println(map.get("str") instanceof String);
System.out.println(map.containsKey("real_null"));
System.out.println(map.containsKey("fake_null"));
System.out.println(map.get("real_null"));
System.out.println(map.get("fake_null"));
1
2
3
4
5
true
false
true
null
null