guava--应用篇(二)Optional 和断言 Preconditions

Preconditions

  前置条件检查,或者断言也行

   checkNotNull

//        NULL检查
        Preconditions.checkNotNull("");  // null 抛异常

//        抛空指针异常,并打印信息
        checkNotNull("", "参数不能为null");//

    checkArgument

//         参数校验 ,当表达式为false的时候会抛java.lang.IllegalArgumentException
        checkArgument( 1 == 2,"1 != 2");

//         java.lang.IllegalArgumentException: 参数预期是success, 实际等于 error 
        String str = "error";
        checkArgument( str.equals("sucess"), "参数预期是success, 实际等于 %s ", str);

     checkState

//        状态检查,当表达式为false的时候会抛java.lang.IllegalStateException
        checkState(1 == 2);

      checkElementIndex

//        元素下坐标越界检查,index 不能大于size, 否则抛异常java.lang.IndexOutOfBoundsException
//        0 <= index < size
        checkElementIndex(1,Lists.newArrayList().size());
//        同上, 0 <= index <= size
        checkPositionIndex(1,new String[]{}.length,"123");

//        区间范围检查,0 < start <= end <= sieze,否则
//         start < 0 || end < start || end > size 会抛异常
        checkPositionIndexes(2,2,2);

Optional

    对null的处理, 不过再java8中已经已经引用, 所以如果jdk是1.8以上的 可以使用jdk自带的

         /**创建Optional*/
//        of 方法返回一个包含对对象引用的optional对象,如果参数为null,会抛空指针
        Optional<String> of = Optional.of("");
//         同上,不过参数可以为null
        Optional<String> fromNullable = Optional.fromNullable(null);
//         创建一个引用缺失的 optionnal实例
        Optional<Object> absent = Optional.absent();

 optional的使用,

从optional中获取引用

        /**从optional中获取引用**/
//         isPresent, 返回optional中的引用,如果不是null则为ture,否则 false
           fromNullable.isPresent();
//         get 获取optional中的引用, 如果为null会抛异常java.lang.IllegalStateException
           fromNullable.get();
//         or(default), 如果引用为null, 则返回默认
           fromNullable.or("default");
//        orNull, 如果引用为null,则返回null
        System.out.println(fromNullable.orNull());
//        返回Optional所包含引用的单例不可变集,如果引用存在,返回一个只有单一元素的集合,如果引用缺失为null,返回一个空集合。
        Set<String> asSet = fromNullable.asSet();

        /** 和 jdk8 的optional的转换*/
        java.util.Optional<String> s = fromNullable.toJavaUtil();
        

猜你喜欢

转载自blog.csdn.net/xiaodujava/article/details/99326712