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

迭代器中null对象经String.valueOf处理为何无异常且值为'null'?

问题解答

先看你给出的代码:

List<String> wideTableData = new ArrayList<>();
wideTableData.add(null);
wideTableData.add(null);
Iterator<String> iterator = wideTableData.iterator();
while (iterator.hasNext()) {
    String firstValue = String.valueOf(iterator.next());
    System.out.println(Strings.isNullOrEmpty(firstValue));
    System.out.println(firstValue.equals("null"));
}

之所以调用String.valueOf时没抛异常,反而得到字符串"null",核心原因是这个方法的内部实现专门处理了null参数的情况:

  • 当传入的参数是null时,String.valueOf(Object obj)会直接返回字符串常量"null"
  • 当参数不为null时,才会调用该对象的toString()方法来生成字符串

所以你代码里每次迭代取出的都是null,传入String.valueOf后就得到了"null"字符串,自然不会触发空指针异常,后续判断firstValue.equals("null")会返回true,而Strings.isNullOrEmpty(firstValue)会返回false(因为这个字符串既不是null也不是空串)。

内容的提问来源于stack exchange,提问作者new javaer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:17:07