guaua学习,工具专题

Preconditions

1,http://www.cnblogs.com/peida/p/Guava_Preconditions.html

 1 .checkArgument(boolean) :
  功能描述:检查boolean是否为真。 用作方法中检查参数
  失败时抛出的异常类型: IllegalArgumentException

  2.checkNotNull(T):     
  功能描述:检查value不为null, 直接返回value;
  失败时抛出的异常类型:NullPointerException

  3.checkState(boolean):
  功能描述:检查对象的一些状态,不依赖方法参数。 例如, Iterator可以用来next是否在remove之前被调用。
  失败时抛出的异常类型:IllegalStateException

  4.checkElementIndex(int index, int size):
  功能描述:检查index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。   
  失败时抛出的异常类型:IndexOutOfBoundsException


  5.checkPositionIndex(int index, int size):这个可以==size
  功能描述:检查位置index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
  失败时抛出的异常类型:IndexOutOfBoundsException

  6.checkPositionIndexes(int start, int end, int size):
  功能描述:检查[start, end)是一个长度为size的list, string或array合法的范围子集。伴随着错误信息。
  失败时抛出的异常类型:IndexOutOfBoundsException

  //不为空
        Preconditions.checkNotNull(content, "content is null");
        //字数要求,10<x<50
        try {
            Preconditions.checkArgument(content.trim().length() > NumberConst.RESPONSE_MIN
                    && content.trim().length() < NumberConst.RESPONSE_MAX, ResultConst.REQUEST_CONTENT);
        } catch (IllegalArgumentException e) {
            log.info("回复字数不符合要求");
            throw new BizException(ResultConst.ERROR_CODE, e.getMessage());
        }

 Lists.transform

这个方法有坑,返回的list只保留了原来list和转换方法,所以说每次都只通过旧list计算出新list,不能再临时的对象上添加东西

解决方案:拷贝它的引用

List<ResumeResponseForm> resumeResponseFormList = new ArrayList<ResumeResponseForm>(resumeResponseFormListTemp);

https://www.cnblogs.com/winkey4986/p/7498769.html

https://blog.csdn.net/mnmlist/article/details/53870520

Optional

静态方法

 Optional.of(T):获得一个Optional对象,其内部包含了一个非null的T数据类型实例,若T=null,则立刻报错。
  Optional.absent():获得一个Optional对象,其内部包含了空值
  Optional.fromNullable(T):将一个T的实例转换为Optional对象,T的实例可以不为空,也可以为空[Optional.fromNullable(null),和Optional.absent()等价。

2.实例方法:

  1>. boolean isPresent():如果Optional包含的T实例不为null,则返回true;若T实例为null,返回false
  2>. T get():返回Optional包含的T实例,该T实例必须不为空;否则,对包含null的Optional实例调用get()会抛出一个IllegalStateException异常
  3>. T or(T):若Optional实例中包含了传入的T的相同实例,返回Optional包含的该T实例,否则返回输入的T实例作为默认值
  4>. T orNull():返回Optional实例中包含的非空T实例,如果Optional中包含的是空值,返回null,逆操作是fromNullable()

        //初次访问就第一个未默认,选了的话就选了的为默认
//        if (_resumeId == null) {
//            _resumeId = resumeDtoList.get(0).getRes_id();
//        }
        Optional<Long> resumeIdOptional = Optional.fromNullable(_resumeId);
        Long resumeId = resumeIdOptional.or(resumeDtoList.get(0).getRes_id());

Strings

// 问题: 1."UTF-8"必须在Java平台中被支持 2.人工敲入会有偏差
// byte[] bytes = "foo".getBytes("UTF-8");
// 解决: Charsets类提供了对Java平台支持字符集
byte[] bytes = "foo".getBytes(Charsets.UTF_8);


// 问题: 使用StringBuilder类连接字符串太繁琐, 代码其实都是重复的
// 解决: Strings类封装了连接字符串的统一代码
System.out.println("padEnd");
String stringsTest = Strings.padEnd("foo", 6, 'o');
System.out.println(stringsTest);

// 在String作为参数时,将null转换成""防止空指针问题
System.out.println("nullToEmpty");
String nullToEmptyTest1 = Strings.nullToEmpty("123");
String nullToEmptyTest2 = Strings.nullToEmpty(null);
System.out.println(nullToEmptyTest1 + "--" + nullToEmptyTest2);

// ""转null,是字符串的"null"
System.out.println("emptyToNull");
String emptyToNullTest1 = Strings.emptyToNull("123");
String emptyToNullTest2 = Strings.emptyToNull("");
System.out.println(emptyToNullTest1 + "--" + emptyToNullTest2);

原文地址:https://www.cnblogs.com/vhyc/p/8849558.html