避免空指针的集合类
Optional既可以存放对象也可以存放NULL
创建方法:
可以使用 of() 和 ofNullable() 方法创建包含值的 Optional。两个方法的不同之处在于如果你把 null 值作为参数传递进去,of() 方法会抛出 NullPointerException:
@Test(expected = NullPointerException.class)
public void whenCreateOfEmptyOptional_thenNullPointerException() {
Optional<User> opt = Optional.of(user);
}
of()方法适合用于明确存放的对象是非空值的情况
Optional<User> opt = Optional.ofNullable(user);
当对象不确定是否非空的时候使用ofNullable()方法进行存放
获取Optional对象的值方法:
get()方法:
@Test
public void whenCreateOfNullableOptional_thenOk() {
String name = "John";
Optional<String> opt = Optional.ofNullable(name);
assertEquals("John", opt.get());
}
如果获取的值为NULL的时候会抛出异常,为了避免异常需要在获取前进行判断
ifPresent()方法:
assertTrue(opt.isPresent());
该方法除了执行检查外,还接受一个Consumer(消费者) 参数,如果对象不是空的,就对执行传入的 Lambda 表达式:
opt.ifPresent( u -> assertEquals(user.getEmail(), u.getEmail()));
只有user用户不为NULL的时候才会执行断言
assertEquals 和 assertTrue 区别
相同之处:都能判断两个值是否相等
assertTrue 如果为true,则运行success,反之Failure
assertEquals 如果预期值与真实值相等,则运行success,反之Failure
不同之处:
assertEquals 运行Failure会有错误提示,提示预期值是xxx,而实际值是xxx。容易调式
assertTrue 没有错误提示
OPtional相关资料参考:https://www.cnblogs.com/zhangboyu/p/7580262.html