Optional
主要解决NPE问题,包装类
构造方法
- Optional类的构造方法时私有的,通常情况下通过一下方法构建
- Optional.empty(); 返回一个空的Optinal实例
- Optional.of(T t); 不能传null否则报NPE
- Optional.ofNullable(T t); 任意值
主要方法
- get()
直接调用get()取值,如果对象null还是报NPE - isPresent()
如果对象为null,返回结果为false,反之结果为true; - ifPresent(Consumer<? super T> consumer)
参数为consumer函数接口 ,如果对象为null则不会调用accept`(),反之则会调用。 - orElse(T t)
如果对象为null则会返回t,如果不为null返回原本结果。 - orElseGet(Supplier<? extends T> supplier)
参数为Supplier对象,其实和上面的**orElse(T t)**查不多,如果对象为null则会返回get()执行的结果,如果不为null返回原本结果。
唯一区别在于 orElse(T t) 不管对象为不为null都会生成t对象,而 **orElseGet(Supplier<? extends T> supplier)**只在对象为null时才会调用后面的get()方法
orElseGet(Supplier<? extends T> supplier) 相比 orElse(T t) 性能更高 - orElseThrow(Supplier<? extends X> exceptionSupplier)
其实和上面的 orElseGet(Supplier<? extends T> supplier)`查不多,如果对象为null则会抛出get()的异常,如果不为null返回原本结果。
本文深入解析了Java 8中Optional类的使用方法,包括其构造方法、主要功能如避免空指针异常(NPE)的技巧,以及get()、isPresent()、ifPresent()等关键API的运用,帮助开发者提高代码稳定性和可读性。

346

被折叠的 条评论
为什么被折叠?



