Java - IF 语句将值视为 NULL,即使在签入调试时它不是



这是一个奇怪的问题,请提供任何帮助。

我正在处理一个Spring Batch作业,该作业将事务发送到Kafka主题,当成功时,状态代码将以字符串的形式返回:";C";。有一个检查这个状态代码是否为空,如果是,它将给出一个适当的错误消息,如下所示,稍后输出到一个表上。

            if (kafkaWriter.getKafkaStatusCode() == null)
            {
                messagingResultCode = CommonConstants.KAFKA_NULL_RESULT;
            }

因此,由于上面的代码,对于作业所拾取的几个事务,我得到了一条Kafka null结果错误消息,因此我进行了调试,以查看在设置messagingResultCode的位置放置断点时发生了什么。

但当我评估";kafkaWriter.getKafkaStatusCode((==空"它显示为";(布尔值(false";在Spring Tools Suite中。当查看KafkaStatusCode时,它显示为";C";所以肯定不是null,但它仍然进入了代码中。

getKafkaStatusCode((所做的只是返回一个字符串:

public String getKafkaStatusCode() {
    return kafkaStatusCode;
}

这种情况只发生在服务器上运行的第一个作业上(我使用的是Liberty(,在所有后续运行中,代码的行为都与预期一致。

我已经尝试将String messagingResultCode初始化为null"和一个默认值,但每次都会发生同样的事情。

感谢

"。或者:(time/(异步已到位;((即调试影响结果;(–xerx593 3小时前";

@xerx593你是对的,调试器没有向我显示正确的值,这是我在添加一些额外的日志并在非调试中运行它之后发现的。

事实证明,你不能一直信任调试器:(

感谢

相关内容

  • 没有找到相关文章

最新更新