gpt4 book ai didi

java - 为什么这个 boolean 比较不能正常工作?

转载 作者:行者123 更新时间:2023-12-02 04:38:25 26 4
gpt4 key购买 nike

所以我正在使用 Netty,并试图让一个简单的客户端通过 TCP 连接到服务器,但遇到了一个非常奇怪、不寻常的问题。我正在尝试连接,每当我这样做时它就会连接,然后客户端就会断开连接。我调试了客户端并遇到了这个奇怪的问题,您可以在图片中看到。在 Netty 包含的 ClientBootstrap 类中,如果上面的 try/catch 中 success 设置为 true,它将关闭 channel 。正如您在调试变量中看到的,变量 success 设置为 true,但它会通过上面的 if 语句,仅当 success 为 false 时才会继续。这有什么意义呢?我已经调试了它,成功在 if 语句上方设置为 true,然后转到后面的 if 语句。如果有人能解释一下那就太好了。

最佳答案

In the ClientBootstrap class that Netty includes it closes the channel if success is set to true in the try/catch above it.

不,没有。这是因为否定 (!)。如果旁边的表达式为 false boolean 否定将返回 true,反之亦然。

您声明:

if(!success)

现在,仅当您的程序到达 try 的最后一行时,success 才会设置为 true。如果不是,则意味着出现了问题 - 可能是 channel 出现了问题 - 现在您将关闭该有问题的 channel 。所以它的作用与你想要的相反。

关于java - 为什么这个 boolean 比较不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30472015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com