如何优雅的判断null

		String a = "a";
        String b = "ab";

        //判断空 返回true
        Objects.isNull(a);
        //判断不等于null 返回true
        Objects.nonNull(a);

对于 Integer 的判空,可以使用 Optional.ofNullable 来构造一个 Optional,然后使用 orElse(0) 把 null 替换为默认值再进行 +1 操作。

对于 String 和字面量的比较,可以把字面量放在前面,比如"OK".equals(s),这样即使 s 是 null 也不会出现空指针异常;

		Integer a1 = 1;
        Optional.ofNullable(a1);
        Optional.ofNullable(a1).equals(a);
        Optional.ofNullable(a1).get();
        Optional.ofNullable(a1).orElse(a1++);

而对于两个可能为 null 的字符串变量的 equals 比较,可以使用 Objects.equals,它会做判空处理。

Objects.equals(a,a1);	

对于 ConcurrentHashMap,既然其 Key 和 Value 都不支持 null,修复方式就是不要把 null 存进去。HashMap 的 Key 和 Value 可以存入 null,而 ConcurrentHashMap 看似是 HashMap 的线程安全版本,却不支持 null 值的 Key 和 Value,这是容易产生误区的一个地方。对于类似 fooService.getBarService().bar().equals(“OK”) 的级联调用,需要判空的地方有很多,包括 fooService、getBarService() 方法的返回值,以及 bar 方法返回的字符串。如果使用 if-else 来判空的话可能需要好几行代码,但使用 Optional 的话一行代码就够了。对于 rightMethod 返回的 List,由于不能确认其是否为 null,所以在调用 size 方法获得列表大小之前,同样可以使用 Optional.ofNullable 包装一下返回值,然后通过.orElse(Collections.emptyList()) 实现在 List 为 null 的时候获得一个空的 List,最后再调用 size 方法

jdk8 特性 使用Optional处理null
https://www.cnblogs.com/zhangboyu/p/7580262.html

### Java 中优雅判断变量为空的方式 在 Java 编程中,处理 `null` 值是一个常见的需求。为了减少空指针异常的发生并提高代码的可读性和健壮性,可以采用多种优雅的方式来检查变量是否为 `null`。 #### 使用短路逻辑表达式 通过利用布尔表达式的短路特性,可以在条件语句中安全地检查对象及其属性或方法调用的结果。如果第一个条件检测到 `null`,则后续的操作不会被执行[^2]。 ```java if (object != null && object.someMethod()) { // 执行某些操作 } ``` #### Optional 类的应用 自 Java 8 起引入的 `Optional<T>` 提供了一种更清晰的方法来表示可能不存在的值。它可以帮助开发者显式地标记那些可能会返回 `null` 的情况,并提供一系列实用的方法来进行值的存在性验证和默认行为定义[^1]。 ```java import java.util.Optional; public class Example { public static void main(String[] args) { String name = null; Optional<String> optionalName = Optional.ofNullable(name); optionalName.ifPresentOrElse( n -> System.out.println("Name is present: " + n), () -> System.out.println("No name provided.") ); } } ``` #### 解析上下文中保持跟踪位置的例子 虽然此例子主要涉及 XML 解析过程中的路径追踪,但它展示了如何在一个复杂的数据结构遍历过程中维护状态信息以防止潜在的错误发生[^3]。尽管这不直接用于 `null` 判断,但其设计理念——即始终知道当前所处的状态或者节点——对于构建稳健的 `null` 处理机制具有启发意义。 #### 总结 上述几种方式各有优劣,在实际开发当中可以根据具体场景选择最适合的技术手段来实现对 `null` 的有效管理,从而提升程序质量与用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方来财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值