Java8之Optional类
程序员文章站
2022-05-05 08:56:15
...
Option类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念,并且避免空指针异常。
package com.alisa.java8.optional;
import com.alisa.java8.entity.Employee;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.omg.Messaging.SYNC_WITH_TRANSPORT;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Optional;
/*
* Optional容器类:用于避免空指针异常
* Optional.of(T t):创建一个Optional实例
* Optional.empty():创建一个空的Optional实例
* Optional.ofNullable(T t):若t不为null,创建Optional实例,否则创建空实例
* isPresent():判断是否包含值
* orElse(T t):如果调用对象包含值,返回该值,否则返回t
* orElseGet(Supplier s):如果调用对象包含值,返回该值,否则返回s获取的值
* map(Function f):如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()
* flatMap(Function mapper):与map类似,要求返回值必须是Optional
* */
@RunWith(SpringRunner.class)
@SpringBootTest
public class OptionalTest {
@Test
public void test1() {
Optional<Employee> op = Optional.of(new Employee());
Employee emp = op.get();
System.out.println(emp);
}
@Test
public void test2() {
Optional<Employee> op = Optional.ofNullable(new Employee());
if (op.isPresent()) {
System.out.println(op.get());
}
Employee emp1 = op.orElse(new Employee("Alisa"));
System.out.println(emp1);
Employee emp2 = op.orElseGet(() -> new Employee());
System.out.println(emp2);
}
@Test
public void test3() {
Optional<Employee> op1 = Optional.of(new Employee(101, "alisa", 18, 111111));
Optional<String> op2 = op1.map(Employee::getName);
System.out.println(op2.get());
Optional<String> op3 = op1.flatMap((e) -> Optional.of(e.getName()));
System.out.println(op3.get());
int i = (int)(10+Math.random()*11);
System.out.println(i);
}
}
上一篇: 代码的搬运工,Java 8新内容整理
下一篇: RecyclerView平滑到指定位置