美文网首页使用技巧BUG记录
Java中String...如何判空可变字符串如何判空

Java中String...如何判空可变字符串如何判空

作者: MyFork | 来源:发表于2020-09-22 11:45 被阅读0次

    22Sep2020[Bug记录]

    什么是String...

    String…是java5新加入的功能,表示的是一个可变长度的参数列表
    其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Object[]。 例如我们有一个方法叫做listsome(String…strings),那么你还可以写方法listsome(),但你不能写listsome(String[] strings),这样会出编译错误,系统提示出现重复的方法。
    在使用的时候,对于listsome(String…strings),你可以直接用listsome()去调用,标示没有参数,也可以用去listsome(“aaa”),也可以用listsome(new String[]{“aaa”,”bbb”})。
    另外如果既有listsome(String…strings)函数,又有listsome()函数,我们在调用listsome()时,会优先使用listsome()函数。只有当没有listsome()函数式,我们调用test(),程序才会走test(String…strings)

    出现场景

        public static void initPage(Integer pageIndex, Integer pageLimit, String... sortKeys) {
            Assert.notNull(pageIndex, "分页查询,参数pageIndex不能为Null!");
            Assert.notNull(pageLimit, "分页查询,参数pageLimit不能为Null!");
            if (StringUtils.isEmpty(sortKeys)) {
                PageHelper.startPage(pageIndex, pageLimit);
            } else {
            ......
            }
    }
    

    对于一个传递过来的可变参数sortkey,我需要获取到这个值中的内容,但是由于允许这个值允许为空,因此在传递过程中取值过程中如果仅仅是简单的使用Spring中自带的String判空包有可能会抛出一个比较诡异的空指针异常,因此需要对其进行判空操作,而对于StringUtils.isEmpty()函数来说不能够拦截到sortkey为空的情况
    所在的Jar包org.springframework.util

        /**
         * Check whether the given {@code String} is empty.
         * <p>This method accepts any Object as an argument, comparing it to
         * {@code null} and the empty String. As a consequence, this method
         * will never return {@code true} for a non-null non-String object.
         * <p>The Object signature is useful for general attribute handling code
         * that commonly deals with Strings but generally has to iterate over
         * Objects since attributes may e.g. be primitive value objects as well.
         * @param str the candidate String
         * @since 3.2.1
         */
        public static boolean isEmpty(Object str) {
            return (str == null || "".equals(str));
        }
    

    判空失败

    解决办法

    if (StringUtils.isEmpty(sortKeys)) {
        PageHelper.startPage(pageIndex, pageLimit);
    } else {
        //工具包无法捕获到sortKey为空的时候
        String sort = "";
        if (null==sortKeys[0]){
            PageHelper.startPage(pageIndex, pageLimit);
        } else{
            sort = sortKeys[0];
        }
    

    解决完成,特此记录防止重复踩坑

    相关文章

      网友评论

        本文标题:Java中String...如何判空可变字符串如何判空

        本文链接:https://www.haomeiwen.com/subject/qucwyktx.html