jdk8之后判空如何写最优雅,字符串、对象、集合等
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java 8及之后的版本中,可以利用Optional类、Stream API以及Objects类等特性来更优雅地处理判空问题。下面分别针对字符串、对象、集合给出一些示例:
对于字符串,可以直接使用String.isEmpty()
或String.isBlank()
(Java 11引入)方法检查是否为空或空白。
String str = ...;
if (str == null || str.isEmpty()) {
// 字符串为空
}
// Java 11及以上
if (str == null || str.isBlank()) {
// 字符串为空或全为空白字符
}
可以使用Objects.isNull()
来判断对象是否为null。
MyObject obj = ...;
if (Objects.isNull(obj)) {
// 对象为null
}
对于集合,直接使用集合的isEmpty()
方法即可。
List<String> list = ...;
if (list == null || list.isEmpty()) {
// 集合为空
}
Optional是Java 8引入的一个容器对象,它可能包含或者不包含非null值。这提供了一种更加优雅的方式来处理null值。
Optional<MyObject> optionalObj = Optional.ofNullable(getObject());
optionalObj.ifPresent(myObject -> {
// 处理非null对象的逻辑
});
isEmpty()
更直接,但为了展示Optional的用法:Optional<String> optionalStr = Optional.ofNullable(getString());
optionalStr.filter(s -> !s.isEmpty()).ifPresent(str -> {
// 字符串非空时的逻辑
});
Optional<List<String>> optionalList = Optional.ofNullable(getList());
optionalList.filter(list -> !list.isEmpty()).ifPresent(strings -> {
// 集合非空时的逻辑
});
通过这些方式,你可以以一种更安全且更具有表达力的方式处理Java中的判空问题。