guava學習之——使用Preconditions類進行參數檢查。

      參數檢查是一個項目中必須要考慮到的。參數檢查前端要做,後端更要做。這決定了一個項目的健壯性和安全性。

guava的Preconditions類可以簡單,優雅的幫助我們實現參數檢查。

Preconditions類主要提供以下幾種方法:

1 .checkArgument(boolean) :
  用來檢查boolean是否爲真。 用作方法中檢查參數
  失敗時拋出的異常類型: IllegalArgumentException

2.checkNotNull(T):     
  用來檢查value不爲null, 直接返回value;
  失敗時拋出的異常類型:NullPointerException

3.checkState(boolean):
  用來檢查對象的一些狀態,不依賴方法參數。 例如, Iterator可以用來next是否在remove之前被調用。
  失敗時拋出的異常類型:IllegalStateException

4.checkElementIndex(int index, int size):
  用來檢查index是否爲在一個長度爲size的list, string或array合法的範圍。 index的範圍區間是[0, size)(包含0不包含size)。無需直接傳入list, string或array, 只需傳入大小。返回index。   
  失敗時拋出的異常類型:IndexOutOfBoundsException

5.checkPositionIndex(int index, int size):
  用來檢查位置index是否爲在一個長度爲size的list, string或array合法的範圍。 index的範圍區間是[0, size)(包含0不包含size)。無需直接傳入list, string或array, 只需傳入大小。返回index。
  失敗時拋出的異常類型:IndexOutOfBoundsException

6.checkPositionIndexes(int start, int end, int size):
  用來檢查[start, end)是一個長度爲size的list, string或array合法的範圍子集。伴隨着錯誤信息。
  失敗時拋出的異常類型:IndexOutOfBoundsException


下面是一些小例子:

比如我們開發java web程序時,需要校驗客戶端傳來的參數。


1.檢查前端傳來的電話號碼,要求不能爲空,並且正則匹配。

Preconditions.checkArgument(phoneNum!=null && !"".equals(phoneNum.trim()) &&phoneNum.matches("^(13[0-9]|15[0-9]|17[678]|18[0-9]|14[57])[0-9]{8}$"), "請輸入正確的電話號碼");


2.對方法的參數進行判斷,如若不進行判斷,就會引發很多問題。

public void f(Entry entry) {
        Preconditions.checkNotNull(entry);// 參數校驗
        log.info(entry.getName()); // 如果不進行參數的檢查,當entry爲空時,程序就會出現問題。
    }




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章