简介:
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 示例
public static void main(String[] args) {
// checkArgument
try {
// 校验表达式是否正确,并使用占位符输出错误信息
Preconditions.checkArgument(1 > 2, "%s is wrong", "1 > 2");
} catch (IllegalArgumentException e) {
print(e.getMessage()); // 1 > 2 is wrong
}
// checkState
try {
// 校验表达式是否正确,并使用占位符输出错误信息,使用方法作为表达式,一般用作校验方法返回是否为真
Preconditions.checkState(testMethod(), "%s is wrong", "testMethod()");
} catch (IllegalStateException e) {
print(e.getMessage()); // testMethod() is wrong
}
// checkNotNull
try {
// 校验对象是否为空,并使用占位符输出错误信息
Preconditions.checkNotNull(testObject(), "%s is null", "testObject()");
} catch (NullPointerException e) {
print(e.getMessage()); // testObject() is null
}
// 初始化测试用list
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
// checkElementIndex
try {
// 校验元素索引是否有效 ,使用checkPositionIndex校验
Preconditions.checkElementIndex(10, list.size());
// 在临界值size处产生异常
} catch (IndexOutOfBoundsException e) {
print(e.getMessage()); // index (10) must be less than size (10)
}
// checkPositionIndex
try {
// 校验元素索引是否有效,使用checkPositionIndex校验
Preconditions.checkPositionIndex(10, list.size());
// 在临界size处不产生异常
// print("checkPositionIndex does not throw IndexOutOfBoundsException");
} catch (IndexOutOfBoundsException e) {
print(e.getMessage()); // checkPositionIndex does not throw
// IndexOutOfBoundsException
}
// checkPositionIndexes
try {
// 校验是否是有效的索引区间
Preconditions.checkPositionIndexes(3, 11, list.size());
} catch (IndexOutOfBoundsException e) {
print(e.getMessage()); // end index (11) must not be greater than
// size (10)
}
}
private static void print(String message) {
System.out.println(message);
}
// 测试方法
private static boolean testMethod() {
return 1 > 2;
}
// 测试对象
private static Object testObject() {
return null;