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

这篇博客介绍了Java中可变参数(String… sortKeys)的使用,包括其语法特点和调用方式。在实际应用中,由于可变参数允许为空,导致在处理sortKeys时可能会遇到空指针异常。文章通过一个示例展示了在Spring的StringUtils.isEmpty()函数无法捕获sortKeys为空的情况,并提出了解决方案:在使用前先判断sortKeys数组的第一个元素是否为空,以避免空指针异常。此外,还强调了在存在可变参数方法和无参数方法时,调用无参数方法会优先执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

*

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.

*

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];

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值