java - Java - IF 语句将值视为 NULL,即使在检查调试时它不是
问题描述
这是一个奇怪的,所以任何帮助将不胜感激。
我正在处理将事务发送到 Kafka 主题的 Spring Batch 作业,成功后状态代码将作为字符串返回:“C”。检查此状态代码是否为空,如果为空,它将给出如下适当的错误消息,以便稍后输出到表中。
if (kafkaWriter.getKafkaStatusCode() == null)
{
messagingResultCode = CommonConstants.KAFKA_NULL_RESULT;
}
所以发生的事情是,对于作业获取的几个事务,由于上述代码,我收到了 Kafka 空结果错误消息,因此我进入调试以查看在设置 messingResultCode 的位置设置断点发生了什么。
但是当我评估“kafkaWriter.getKafkaStatusCode() == null”时,它在 Spring Tools Suite 中显示为“(boolean) false”。在查看 KafkaStatusCode 时,它显示为“C”,所以绝对不是 null,但它仍然进入了代码。
getKafkaStatusCode() 所做的只是返回一个字符串:
public String getKafkaStatusCode() {
return kafkaStatusCode;
}
这只会发生在服务器上运行的第一个作业(我正在使用 Liberty)上,并且在所有后续运行中,代码都会按预期运行。
我尝试将字符串消息传递结果代码初始化为 null、"" 和默认值,但每次都会发生同样的事情。
谢谢
解决方案
".or: (time/) asynchronity is in place ;) (I.e. debugging influences the outcome;) – xerx593 3 hours ago"
@xerx593 You were right, the debugger wasn't showing me the correct value which I found after putting in some extra logging and running it in non-debug.
Turns out you can't trust the debugger all the time :)
Thanks
推荐阅读
- assembly - 在汇编中连接两个字符串
- c++ - 将元素分配给映射值时的C ++错误访问
- javascript - 如何从选择表单中获取 data-img-src 的实时预览?
- reactjs - 如何在反应中使用材料表库将所有列指定为可排序
- go - 如何从其他文件调用函数
- firebase - 从 Firebase 托管应用程序对 Cloudrun 服务进行 Axios 调用时出现 CORS 错误
- python - 无法将任何模块导入我的 python 项目
- node.js - 即使我使用 Access-Control-Allow-Origin,Express 服务器也不允许 CORS *
- c++ - 需要关于我的平均计算器代码的建议
- reactjs - 每次状态更改时如何在渲染之前等待异步操作完成