当前位置: 首页 > 教程 > Guava >

Guava Preconditions类

精华
小牛编辑
179浏览
2023-03-14

1 什么是Guava Preconditions类

Preconditions类提供静态方法来检查方法或构造函数是否使用正确的参数调用。它检查先决条件。它的方法在失败时抛出 IllegalArgumentException异常。

2 Guava Preconditions类的语法

@GwtCompatible
public final class Preconditions
   extends Object

3 Guava Preconditions类的方法

方法 描述
static void checkArgument(boolean expression) 确保涉及调用方法的一个或多个参数的表达式的真实性。
static void checkArgument(boolean expression, Object errorMessage) 确保涉及调用方法的一个或多个参数的表达式的真实性。
static void checkArgument(boolean expression, String errorMessageTemplate, Object. errorMessageArgs) 确保涉及调用方法的一个或多个参数的表达式的真实性。
static int checkElementIndex(int index, int size) 确保索引指定数组、列表或大小字符串中的有效元素。
static int checkElementIndex(int index, int size, String desc) 确保索引指定数组、列表或大小字符串中的有效元素。
static <T> T checkNotNull(T reference) 确保作为参数传递给调用方法的对象引用不为空。
static <T> T checkNotNull(T reference, Object errorMessage) 确保作为参数传递给调用方法的对象引用不为空。
static <T> T checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs) 确保作为参数传递给调用方法的对象引用不为空。
static int checkPositionIndex(int index, int size) 确保索引指定数组、列表或大小字符串中的有效位置。
static int checkPositionIndex(int index, int size, String desc) 确保索引指定数组、列表或大小字符串中的有效位置。
static void checkPositionIndexes(int start, int end, int size) 确保开始和结束指定数组、列表或大小字符串中的有效位置,并且是有序的。
static void checkState(boolean expression) 确保涉及调用实例状态的表达式的真实性,但不涉及调用方法的任何参数。
static void checkState(boolean expression, Object errorMessage) 确保涉及调用实例状态的表达式的真实性,但不涉及调用方法的任何参数。
static void checkState(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) 确保涉及调用实例状态的表达式的真实性,但不涉及调用方法的任何参数。

5 Guava Preconditions类的例子

让我们看一个简单的Guava Preconditions类示例。

package cn.xnip;

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;
   }
}

输出结果为: