使用Optional时面临NullPointerException

时间:2018-03-10 00:56:43

标签: java nullpointerexception java-8 optional

我正在使用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。

1 个答案:

答案 0 :(得分:5)

您可以使用Map's getOrDefault method

  

返回指定键映射到的值,如果此映射不包含键的映射,则返回defaultValue

resultMap.put(MyEnum.ANIMAL,
    map.getOrDefault(MyEnum.ANIMAL, Optional.of(new ArrayList<>())) );

这可以通过让方法检查来避免null