在 Lambda 表达式中处理 Null 值

Handling Null Values in Lambda Expression

提问人:vshah1 提问时间:9/7/2019 最后编辑:Ihor Patsianvshah1 更新时间:9/16/2019 访问量:2025

问:

我正在尝试迭代使用 lambda 表达式,在迭代时,我必须使用字段 setter 方法在一个 POJO 中设置值。当 of 中有值时,问题就来了(特别是应该处理 map 字段)。我尝试了很多事情来处理.ListMapnullListMapnullNullPointerException

Employee employee = new Employee();

employee.setEmployeeName(result.getOrDefault("employeeName", "").toString());

employee.setEmployeeName(!StringUtils.isEmpty(result.get("employeeName").toString()) ? result.get("employeeName").toString() : " "); 
// when i am using this solution it is not giving null pointer exception 
// but if the value is null then it is returning "null" value it means 
// null as a string which shouldn't be the expected output. 

employee.setEmployeeName(String.valueOf(result.get("employeeName").equals("null") ? "" : result.get("employeeName")));

List<Map<String,Object>> r1 = new ArrayList<Map<String,Object>>();
    response.forEach(result -> { 
        employee.setEmployeeName(result.getOrDefault("employeeName", "").toString());

    })
java 字符串 lambda nullpointerException null

评论

0赞 trilogy 9/7/2019
StringUtils.isEmpty根据其文档,不会返回空指针异常。
1赞 Janos Vinceller 9/7/2019
检查 lambda 中的“结果”是否为 null。使用调试器。你可以让你的代码更加循序渐进,以便能够分析发生的每一个小步骤、每个变量等。还可以使用 Optionals 来避免 NullPointerExceptions。
0赞 Martin van Wingerden 9/15/2019
这仍然是一个问题吗?它可以帮助澄清您的代码,什么是相同的或相同的。哪个值是什么,你得到的堆栈跟踪是什么?responser1nullNullPointerException

答:

1赞 vshah1 9/16/2019 #1

问题解决了,我使用了可选,如下所示。

Optional.ofNullable(result.get("employeeName")).orElse(" ").toString()