我正在使用NullPointerException
。我得到一个明显的null
,因为该密钥的结果为public Map<MyEnum, Optional<List<String>>> process(Map<MyEnum, Optional<List<String>>> map) {
Map<MyEnum, Optional<List<String>>> resultMap = new HashMap<>();
// Getting NullPointerException here, since map.get(MyEnum.ANIMAL) is NULL
resultMap.put(MyEnum.ANIMAL, doSomething(map.get(MyEnum.ANIMAL).get()));
// do something more here
}
private Optional<List<String>> doSomething(List<String> list) {
// process and return a list of String
return Optional.of(resultList);
}
。
有没有办法处理null情况?
if-else
我试图通过使用Optional来避免{{1}}检查null。
答案 0 :(得分:5)
您可以使用Map
's getOrDefault
method。
返回指定键映射到的值,如果此映射不包含键的映射,则返回
defaultValue
。
resultMap.put(MyEnum.ANIMAL,
map.getOrDefault(MyEnum.ANIMAL, Optional.of(new ArrayList<>())) );
这可以通过让方法检查来避免null
。