Guava Preconditions類


Preconditions提供靜態方法來檢查方法或建構函式,被呼叫是否給定適當的引數。它檢查的先決條件。其方法失敗丟擲IllegalArgumentException。

類宣告

以下是com.google.common.base.Preconditions類的宣告:

@GwtCompatible
public final class Preconditions
   extends Object

類方法

S.N. 方法及說明
1 static void checkArgument(boolean expression)
確保涉及的一個或多個引數來呼叫方法表示式的真相。
2 static void checkArgument(boolean expression, Object errorMessage)
確保涉及的一個或多個引數來呼叫方法表示式的真相。
3 static void checkArgument(boolean expression, String errorMessageTemplate, Object... errorMessageArgs)
確保涉及的一個或多個引數來呼叫方法表示式的真相。
4 static int checkElementIndex(int index, int size)
確保索引指定一個陣列,列表或尺寸大小的字串有效的元素。
5 static int checkElementIndex(int index, int size, String desc)
確保索引指定一個陣列,列表或尺寸大小的字串有效的元素。
6 static <T> T checkNotNull(T reference)
確保物件參照作為引數傳遞給呼叫方法不為空。
7 static <T> T checkNotNull(T reference, Object errorMessage)
確保物件參照作為引數傳遞給呼叫方法不為空。
8 static <T> T checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs)
確保物件參照作為引數傳遞給呼叫方法不為空。
9 static int checkPositionIndex(int index, int size)
確保索引指定一個陣列,列表或尺寸大小的字串的有效位置。
10 static int checkPositionIndex(int index, int size, String desc)
確保索引指定一個陣列,列表或尺寸大小的字串的有效位置。
11 static void checkPositionIndexes(int start, int end, int size)
確保開始和結束指定陣列,列表或字串大小有效的位置,並按照順序。
12 static void checkState(boolean expression)
確保涉及呼叫範例的狀態,但不涉及任何引數來呼叫方法表示式的真相。
13 static void checkState(boolean expression, Object errorMessage)
確保涉及呼叫範例的狀態,但不涉及任何引數來呼叫方法表示式的真相。
14 static void checkState(boolean expression, String errorMessageTemplate, Object... errorMessageArgs)
確保涉及呼叫範例的狀態,但不涉及任何引數來呼叫方法表示式的真相。

繼承的方法

這個類繼承了以下類方法:

  • java.lang.Object

Preconditions 範例

使用所選擇的編輯器,建立下面的java程式比如 C:/> Guava

GuavaTester.java
import com.google.common.base.Preconditions;

public class GuavaTester {

   public static void main(String args[]){
      GuavaTester guavaTester = new GuavaTester();
      try {
         System.out.println(guavaTester.sqrt(-3.0));
      }catch(IllegalArgumentException e){
         System.out.println(e.getMessage());
      }
      try {
         System.out.println(guavaTester.sum(null,3));
      }catch(NullPointerException e){
         System.out.println(e.getMessage());
      }
      try {
         System.out.println(guavaTester.getValue(6));
      }catch(IndexOutOfBoundsException e){
         System.out.println(e.getMessage());
      }
   }

   public double sqrt(double input) throws IllegalArgumentException {
      Preconditions.checkArgument(input > 0.0,
         "Illegal Argument passed: Negative value %s.", input);
      return Math.sqrt(input);
   }	

   public int sum(Integer a, Integer b){
      a = Preconditions.checkNotNull(a,
         "Illegal Argument passed: First parameter is Null.");
      b = Preconditions.checkNotNull(b,
         "Illegal Argument passed: Second parameter is Null.");
      return a+b;
   }

   public int getValue(int input){
      int[] data = {1,2,3,4,5};
      Preconditions.checkElementIndex(input,data.length,
         "Illegal Argument passed: Invalid index.");
      return 0;
   }
}

驗證結果

使用javac編譯器編譯如下類

C:\Guava>javac GuavaTester.java

現在執行GuavaTester看到的結果

C:\Guava>java GuavaTester

看到結果。

Illegal Argument passed: Negative value -3.0.
Illegal Argument passed: First parameter is Null.
Illegal Argument passed: Invalid index. (6) must be less than size (5)