zoukankan      html  css  js  c++  java
  • guava学习--Preconditions

    转载:https://my.oschina.net/realfighter/blog/349819

    Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预 处理,能够确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在。

    checkArgument(boolean expression):用来校验表达式是否为真,一般用作方法中校验参数

    checkArgument(boolean expression, @Nullable Object errorMessage):校验表达式是否为真,不为真时显示指定的错误信息。

    checkArgument(boolean expression, @Nullable String errorMessageTemplate, @Nullable Object... errorMessageArgs):校验表达式是否为真,不为真时显示错误信息,错误信息中允许使用占位符。

    checkState(boolean expression):校验表达式是否为真,一般用作校验方法返回是否为真。

    checkState(boolean expression, @Nullable Object errorMessage):当表达式为假的时候,显示指定的错误信息。

    checkState(boolean expression,@Nullable String errorMessageTemplate,@Nullable Object... errorMessageArgs):允许在错误信息中使用占位符。

    checkNotNull(T reference):校验对象是否为空。

    checkNotNull(T reference, @Nullable Object errorMessage):对象为空时显示指定的错误信息。

    checkNotNull(T reference, @Nullable String errorMessageTemplate,@Nullable Object... errorMessageArgs):允许在错误信息中使用占位符。

    checkElementIndex( int index, int size, @Nullable String desc):校验元素的索引值是否有效,index大于等于0小于size,在无效时显示错误描述信息。

    checkElementIndex(int index, int size):错误描述信息为“index”

    checkPositionIndex(int index, int size, @Nullable String desc):校验元素的索引值是否有效,index大于等于0小于等于size,在无效时显示错误描述信息。

    checkPositionIndex(int index, int size):错误描述信息为“index”

    checkPositionIndexes(int start, int end, int size):校验大于等于start,小于end的list的长度是否为size。

    public class PreconditionsTest {

     

    // 打印输出方法

    private static void print(Object obj) {

    System.out.println(String.valueOf(obj));

    }

     

    // 测试方法

    private static boolean testMethod() {

    return 1 > 2;

    }

     

    // 测试对象

    private static Object testObject() {

    return null;

    }

     

    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)

    }

    }

    }

  • 相关阅读:
    codeforces #550D Regular Bridge 构造
    java学习路线-Java技术人员之路从0基础到高级
    iOSeasy造成循引用的场景
    Hybird App(一)----第一次接触
    PNP管理器简析--基于ReactOS0.33
    为什么寄存器比内存快?
    cookie 与 session 的差别、联系
    webstorm 配合IIS使用
    js实现可拉伸移动的div
    无法识别的属性“targetFramework”。请注意属性名称区分大小写
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/6252960.html
Copyright © 2011-2022 走看看