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;
}
}
输出结果为: