首页 > 解决方案 > 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、"" 和默认值,但每次都会发生同样的事情。

谢谢

标签: javaspringif-statementnullboolean

解决方案


".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


推荐阅读