1. 程式人生 > >JDK8之Optional新特性

JDK8之Optional新特性

否則 public 獲取 () IV 實例 st2 emp get

/**
 * JDK8 Optional
 * Created by chengbx on 2018/5/28.
 * Optional<T> 類是一個容器類,代表一個值存在或者不存在,原來用null表示一個值不存在,
 * 現在Optional可以更好的表達這個概念。並且可以避免空指針異常。
 * Optional.of(T t):創建一個 Optional實例
 * Optional. empty():創建一個空的 Optional實例
 * Optional. ofNullable(T t):若t不為nul1,創建 Optional實例,則創建空實例
 * ispresent():判判斷是否包含值
 * orElse(T t):如如果調用對象包含值,返返回該值,否則返回t
 * orElseGet( Supplier s):如果調用對象包含值,返返回該值,否則返回s獲取取的值
 * map( Function f):如如果有值對其處理,並返回處理後的 Optional,否則返回 Optional、 empty
 * flatMap( Function mapper):與map類似,要求返回值必須是 Optional
 *
 
*/ public class TestOptional { @Test public void test1(){ Optional<Employee> optional = Optional.of(null); Employee emp = optional.get(); System.out.println(emp); } @Test public void test2(){ Optional<Employee> op = Optional.empty(); System.out.println(op.get()); } @Test
public void test3(){ Optional<Employee> op = Optional.ofNullable(null); if(op.isPresent()){ System.out.println(op.get()); } Employee emp = op.orElse(new Employee("cbx",18,12000)); System.out.println(emp); Employee emp2 = op.orElseGet(() -> new
Employee()); System.out.println(emp2); } @Test public void test4(){ Optional<Employee> op = Optional.of(new Employee( "張三", 18, 9999.99)); Optional<String> op2 = op.map(Employee::getName); System.out.println(op2.get()); Optional<String> op3 = op.flatMap((e) -> Optional.of(e.getName())); System.out.println(op3.get()); } }

JDK8之Optional新特性