Java中调用trim()前检查null字符串的最简洁实现方案
字符串trim操作空指针问题的简洁解决方案
你之前写的三目判空写法本身有两个问题:
- Java不支持直接把字符串对象当作布尔条件判断,必须显式写
!= null的判断逻辑 - 分支逻辑写反了,就算修正后,原生三目也要重复写两次字段取值,代码冗余度很高:
// 修正后的原生三目写法 siteRequest.getName() != null ? siteRequest.getName().trim() : null;
实际开发里常用的更简洁的空安全实现,根据项目现有依赖选就行:
JDK原生方案(无第三方依赖,Java 8及以上支持)
直接用JDK自带的Optional做链式空安全调用,不需要加任何额外依赖:
Optional.ofNullable(siteRequest.getName()).map(String::trim).orElse(null);
逻辑很简单:把可能为null的字符串包装进Optional容器,只有值非空的时候才会执行trim,值为null时直接返回你设定的默认值——这里写的是返回null,如果业务上不需要保留null,也可以把orElse的参数换成空字符串""。
Apache Commons Lang3 方案(最常用)
绝大多数Java后端项目都会引入这个通用工具包,里面的StringUtils已经封装好了空安全的trim方法,是所有方案里代码最短的:
// 传入null时直接返回null,不会抛空指针 StringUtils.trim(siteRequest.getName()); // 如果想把null统一处理成空字符串返回,避免后续还要判null,用这个方法更省心 StringUtils.trimToEmpty(siteRequest.getName());
方法内部已经做完了所有判空逻辑,不需要自己写任何判断分支。
Guava 方案
如果项目里已经引入了Guava工具包,也可以用它的字符串工具实现:
Strings.nullToEmpty(siteRequest.getName()).trim();
逻辑是先把null值转成空字符串,再执行trim,原值为null的时候最终返回空字符串,不会触发空指针。
内容的提问来源于stack exchange,提问作者user19254373
相关产品推荐
相关产品推荐

