Java Optional学习笔记
Optional 是Java 8之后引入的一个新的类型,用于表示一个可能为空的值。虽然它的设计目的是帮助程序员避免 null 异常,但是它的使用不当可能导致代码变得更难理解和阅读。
正确使用 Optional 的场景有:
1.用于返回值的场景,例如:从数据库中查询到一个可能不存在的值。
2.用于链式调用,例如:从一个对象中获取一个嵌套对象,如果存在才进行操作。
Optional其他用法:
-
使用
orElseGet()
和orElse()
方法:如果值存在,返回值;如果不存在,返回一个默认值。 -
使用
filter()
方法:对存在的值进行过滤,如果满足特定条件,则返回该值;否则返回一个空的 Optional。 -
使用
map()
和flatMap()
方法:将一个 Optional 中的值映射为另一个值,并返回一个新的 Optional。
总的来说,Optional 可以帮助程序员更好地处理 null
值,但是必须仔细考虑如何使用它,以免导致代码难以理解和维护。
好的,接下来让我们看看关于 Optional 的一些概念的代码示例。
-
使用
orElseGet()
和orElse()
方法:
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Optional<String> optional = Optional.ofNullable("value");
System.out.println(optional.orElseGet(() -> "default value"));
System.out.println(optional.orElse("default value"));
}
}
输出:
value
value
在上面的代码中,如果 Optional 存在值,orElseGet()
和orElse()
方法都会返回该值。
-
使用
filter()
方法:
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Optional<String> optional = Optional.ofNullable("value");
optional.filter(value -> value.length() > 5)
.ifPresent(System.out::println);
}
}
输出:value
在上面的代码中,filter()
方法检查 Optional 是否满足特定的条件,如果满足,则返回该值;否则返回一个空的 Optional。
-
使用
map()
和flatMap()
方法:
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Optional<String> optional = Optional.ofNullable("value");
Optional<Integer> length = optional.map(String::length);
System.out.println(length.orElse(-1));
}
}
输出:5
在上面的代码中,map()方法接收一个函数,并将该函数应用于 Optional 中的值,并返回一个新的 Optional。
希望这些代码能够帮助更好地理解Optional的概念。
转载自:https://juejin.cn/post/7197601367044522042