Java Optional ofNullable 处理空指针异常

Java About 1,161 words

示例

JSON字符串

{
    "age": null,
    "address": null
}

Java代码构造JsonNode

ObjectMapper objectMapper = new ObjectMapper();
ObjectNode objectNode = objectMapper.createObjectNode();
Integer age = null;
objectNode.put("age", age);
String address = null;
objectNode.put("address", address);

使用get(String propertyName)获取字段值

int age1 = objectNode.get("age").asInt();
System.out.println(age1);
String address1 = objectNode.get("address").asText();
System.out.println(address1);

输出

0
null

此时想获取name,一个不存在的属性时

String name1 = objectNode.get("name").asText("空name000");
System.out.println(name1);

会得到空指针异常,因为get()方法得到的是空对象,链式调用asText()方法会抛出空指针异常。

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asText()" because the return value of "com.fasterxml.jackson.databind.node.ObjectNode.get(String)" is null
    at xxx.MyApp.main(MyApp.java:38)

Optional.ofNullable

使用OptionalofNullable来防止链式调用过程中可能出现的空指针异常,如果有多个链条,则添加多个map()方法,最后使用OptionalorElse()来处理出现空对象后返回的值。

String name = Optional.ofNullable(objectNode.get("name")).map(jsonNode -> jsonNode.asText("空name000")).orElse("空name111");
System.out.println(name);
Views: 23 · Posted: 2026-01-08

———         Thanks for Reading         ———

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Prev Post
Next Post
Today In History
Browsing Refresh