常见的非空判断方法
为避免空指针异常我们需要进行必要的非空判断
判空情况
数组判空和对象判空如何进行,开发的时候,数据会很乱,进行必要的判空操作很必要,这样前端出问题能快速的知道是数据库的数据混乱。另外对前端传来的数据也应该保持怀疑,对换来的信息进行判空操作(一些修改的不需要,自己慢慢感受)。
- 对前端传来的字段判空
- 对mp查到的对象判空
- 对使用到的mp对象中的字段判空
字符串String判空
- 如果字符串不为null且不为空(认为空格是字符)
1 |
|
- 如果字符串为null或者字符串为空(认为空格是字符)
1 |
|
- 使用字符串工具类:如果字符串不为空(认为空格是字符)
1 |
|
- 使用
isBlank()
方法判断(Java 11+)(认为空格不是字符)
1 |
|
- 使用
equals()
方法判断是否为null
或空
1 |
|
对象判空
1 |
|
List判空
1 |
|
集合对象的 isEmpty()
方法不可以
用于同时判断集合对象是否为 null
和是否为空列表。如果你尝试在 null 对象上调用 isEmpty() 方法,将会抛出 NullPointerException 异常。
正确的判断方法如下:
1 |
|
对象的属性避免空指针
当我们从一个对象中取一个值,设置到另一个对象中,如果取到的为空,则会报空指针异常。有没有一种简便的方法能一口气进行操作?
方法1:
1 |
|
方法2:
当我们想使用问号+冒号进行操作的时候,GPT的回答是不行,因为冒号的左右两侧必须是值,而不是一个方法调用。
1 |
|
GPT给出了一个更好的办法:
1 |
|
如果是直接赋值的话可以设置字段名:
1 |
|
或者是如果还想赋值设置默认值:
1 |
|
上述代码使用 Optional.ofNullable() 方法将 student.getName()
的返回值转换为 Optional 对象,并使用 ifPresent() 方法对 Optional 对象进行判空。如果值不为空,则执行 Lambda 表达式 name -> studentVo.set(name)
,将属性值赋给 studentVo
。
常见的非空判断方法
http://wahoyu.xyz/2023/10/10/NullPointerException/