【发布时间】:2018-05-28 05:36:20
【问题描述】:
我正在使用 Java 1.8,虽然 try-with-resource 在应用程序的其他部分工作正常,但在我这样编写的一个类中:
try(Socket sock = socket != null ? socket : new Socket()){ //Other implementation}
它说资源泄漏。有什么线索吗?
【问题讨论】:
-
这是来自 IDE 编译器的消息(eclipse?)它有时会报告误报
-
我从消息中了解到,如果套接字不为空且未分配的对象无法关闭,则有一个 Socket 无法初始化的选项。
-
我的eclipse Oxygen.3a (4.7.3a) 不抱怨。
-
将三元运算符移动到一个以
socket为参数并执行此逻辑的函数中。这将避免编译器被这里的三元运算符混淆。 -
另外,请将您的代码作为文本而不是图像放在您的问题中。
标签: java try-catch try-with-resources