guava-Optional

optional是guava的base包中的一個類,主要爲了不空指針存在,優雅的校驗參數是否爲空,在JDK8中也是加入了Optional類,其中
包含了guava.optional的全部方法,並新增了一些其餘的特性和方法...
應用場景:
Optional類應該做爲方法的返回值來使用。
Optional類不是爲了不全部的空指針類型機制。方法或構造函數輸入參數強制性檢查就仍然是有必要的。
在如下場景通常不建議使用Optional類。
1.領域模型層(非序列化)
2.數據傳輸對象(同上緣由)
3.方法的輸入參數
4.構造函數參數
 
例:

import java.util.Set;
import com.google.common.base.Optional;

public class OptionalTest {
    
    public void testMethodReturn() {
        Optional<Long> value = method();
        if(value.isPresent()==true){
            System.out.println("得到返回值: " + value.get());     
        }else{
                
            System.out.println("得到返回值: " + value.or(-12L));    
        }
        
        System.out.println("得到返回值 orNull: " + value.orNull());
        
        Optional<Long> valueNoNull = methodNoNull();
        if(valueNoNull.isPresent()==true){
            Set<Long> set=valueNoNull.asSet();
            System.out.println("得到返回值 set 的 size : " + set.size());    
            System.out.println("得到返回值: " + valueNoNull.get());     
        }else{
            System.out.println("得到返回值: " + valueNoNull.or(-12L));    
        }
        
        System.out.println("得到返回值 orNull: " + valueNoNull.orNull());
    }

    private Optional<Long> method() {
        return Optional.fromNullable(null);
    }
    private Optional<Long> methodNoNull() {
        return Optional.fromNullable(15L);
    }
    
}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息