拼接DTO的多个String getter时,如何处理null值避免多余空格?
处理含null值的字符串拼接最佳方案
针对你遇到的拼接DTO字符串时因null值导致多余空格(或"null"字符串)的问题,以下几种实用方案可以解决:
1. 手动StringBuilder拼接(精确控制逻辑)
适合需要对每个字段拼接逻辑做精细控制的场景,避免多余空格和无效字符串:
public String getFullStreetName() { StringBuilder sb = new StringBuilder(getStreetName()); String housenumber = getHousenumber(); if (housenumber != null && !housenumber.isEmpty()) { sb.append(" ").append(housenumber); } String extension = getHouseNumberExtension(); if (extension != null && !extension.isEmpty()) { sb.append(" ").append(extension); } return sb.toString(); }
这里不仅处理null,还额外过滤了空字符串,避免出现连续空格的情况。
2. Java 8+ Stream API拼接(无依赖简洁实现)
如果项目使用Java 8及以上版本,用Stream过滤空值后拼接,代码更简洁:
import java.util.Arrays; import java.util.stream.Collectors; public String getFullStreetName() { return Arrays.stream(new String[]{getStreetName(), getHousenumber(), getHouseNumberExtension()}) .filter(s -> s != null && !s.isBlank()) // Java 11+可用isBlank()同时过滤空白字符 .collect(Collectors.joining(" ")); }
Stream会自动跳过所有符合过滤条件的null/空值,最终用空格连接有效内容。
3. 第三方工具类拼接(最简写法)
如果项目已引入Apache Commons Lang库,可以直接用StringUtils.join,它会自动忽略null值:
import org.apache.commons.lang3.StringUtils; public String getFullStreetName() { return StringUtils.join(getStreetName(), getHousenumber(), getHouseNumberExtension(), " "); }
该方法无需手动过滤,底层已处理null值,代码最简洁。
内容的提问来源于stack exchange,提问作者mariodelta
相关产品推荐
相关产品推荐

