1.定义:
Optional是Java8提供的为了解决null安全问题的一个API。减少了我们进行判断空的程序.
2.相关的方法:
Modifier and Type | Method and Description |
---|---|
static |
empty() 返回一个空 Optional 实例。 |
boolean |
equals(Object obj) 指示是否有其他对象“等于”此选项。 |
Optional |
filter(Predicate super T> predicate) 如果一个值是存在的,而价值匹配给定谓词,返回一个 Optional 描述值,否则返回一个空 Optional 。 |
Optional |
flatMap(Function super T,Optional> mapper) 如果一个值是存在的,将提供 Optional -bearing映射函数,返回结果,否则返回一个空 Optional 。 |
T |
get() 如果一个值是在这 Optional ,返回值,否则将 NoSuchElementException 。 |
int |
hashCode() 返回当前值的哈希代码值,如果有的话,或0(0),如果没有价值。 |
void |
ifPresent(Consumer super T> consumer) 如果一个值存在,调用指定的值的指定的用户,否则什么都不做。 |
boolean |
isPresent() 返回 true 如果有存在价值,否则 false 。 |
Optional |
map(Function super T,? extends U> mapper) 如果一个值是存在的,申请提供的映射函数,如果结果不为空,返回一个 Optional 描述结果。 |
static |
of(T value) 返回与指定非空值的 Optional 目前。 |
static |
ofNullable(T value) 返回一个 Optional 描述指定的值,如果非零,则返回一个空 Optional 。 |
T |
orElse(T other) 如果目前的返回值,否则返回 other 。 |
T |
orElseGet(Supplier extends T> other) 如果目前的返回值,否则调用 other 并返回调用结果的。 |
|
orElseThrow(Supplier extends X> exceptionSupplier) 返回所包含的值,如果存在的话,否则抛出一个由提供的供应商创建的异常。 |
String |
toString() 返回此可选适用于调试的非空字符串表示形式。 |
3.1创建一个空的Optional.
//1.创建空的optional
Optionaloptional=Optional.empty();
//Optional.emptySystem.out.println("1.创建空的optional:\n"+optional.get());
//使用get方法进行输出为NoSuchElementException
3.2使用Optional的of() 方法
先创建一个对象类Optiona_User.java
importlombok.AllArgsConstructor;
importlombok.Data;
@Data
@AllArgsConstructor
publicclassOptional_User{
privateintuid;
privateStringname;
privateintage;
}
测试调用及结果
demo02(user);
//正常输出user
demo02(null);
//NullPointerException
3.3使用Optional的ofNullable()方法进行测试
public staticvoid demo03(Optional_User user){
Optional userB = Optional.ofNullable(user);
System.out.println("3.使用optional.ofNullable()->:\n"+userB.get());
}
测试调用及结果
public staticvoid demo03(Optional_User user){
Optional userB = Optional.ofNullable(user);
System.out.println("3.使用optional.ofNullable()->:\n"+userB.get());
}
3.4 使用ifPresent()检查是否含有值
public static void demo04(Optional_User user) {
Optional userC = Optional.ofNullable(user);
System.out.println(userC.isPresent());
}
测试结果:
//4.demo04 是判断是否为空
demo04(user);
//true
demo04(null);
//false
3.5使用OrElse(other) 进行替换空值,使用orElseGet(()->other)效果一样
publicstatic void demo05(Optional_User user) {
Optional_User user2 = new Optional_User(1,"superl2",22);
Optional_User userD = Optional.ofNullable(user).orElse(user2);
System.out.println("5.1使用orElse(other)->:\n"+userD);
//相当于
Optional_User userD_1 = Optional.ofNullable(user).orElseGet(() -> user2);
System.out.println("5.2 相当于使用orElseGet(()-> other)->:\n"+userD_1);
}
测试结果:
//5.demo05 使用orElse()的方法进行替换null值
demo05(user);
//打印出user
demo05(null);
//打印user2
【java|Java8-Optional】
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)