Preconditions
Preconditions : 参数检测
-
特点:方法明确无歧义,比如数组下标检测,空指针检测
-
参数检测(checkArgument())更加灵活,可以自定义,参数和提示语设置灵活
public class PreconditionsDemo {
public static void main(String[] args) {
//数组越界
try {
getIndex(6);
} catch (IndexOutOfBoundsException e){
System.out.println(e.getMessage());
}
//空指针
try {
sum(4,null);
} catch (NullPointerException e){
System.out.println(e.getMessage());
}
//参数检测
try {
sqrt(-1);
} catch (IllegalArgumentException e){
System.out.println(e.getMessage());
}
}
private static int getIndex(int input){
int[] data={1,2,3,4,5};
int index=Preconditions.checkElementIndex(input,data.length,
"没有数组下标为" + input + "的元素");
return data[index];
}
private static int sum(Integer a,Integer b){
a=Preconditions.checkNotNull(a,
"第一个参数为 Null.");
b=Preconditions.checkNotNull(b,
"第二个参数为 Null.");
return a+b;
}
private static double sqrt(double input){
Preconditions.checkArgument(input>0.0,
"参数值是 %s.",input);
return Math.sqrt(input);
}
}