JDK8之Optional新特性
阿新 • • 發佈:2018-06-01
否則 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()); } @Testpublic 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(() -> newEmployee()); 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新特性