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

标签 java debugging netty

所以我正在使用 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/

相关文章:

java - NoSuchMethodError : com. google.appengine.api.memcache.ErrorHandlers.getConstantLogAndContinue

java - 将字符串转换为 java.util.Date

c++ - cpp/Qt : per class debugging

SQL 不会打印出我的变量

java - Netty - 不能用一个 CookieEncoder 设置多个 cookie

java - Netty HTTP 客户端身份验证

java - netty:启用 keep-alive 时,http 文件示例无法与 apache bench 一起使用

java - 字符串对象数组更新后没有 = 符号?

java - 通过 title 属性获取页面元素 - Selenium 和 Java

.net - 来自 Release模式下的日志程序集的 Debug.WriteLine 未写入 Visual Studio 中的调试输出