Guava Preconditions类 - Guava教程

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)