为什么这个布尔比较不能正常工作?

时间:2015-05-27 02:11:58

标签: java debugging netty

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

1 个答案:

答案 0 :(得分:2)

  

在Netty包含的ClientBootstrap类中,如果在其上方的try / catch中将success设置为true,则会关闭该通道。

不,不。这是因为否定(!)。 布尔否定如果其旁边的表达式为true则返回false,反之亦然。

你说:

if(!success)

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