You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拼接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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:35:02