为什么Eclipse没有显示流的泄漏警告?

Gio*_*ato 6 java eclipse java-stream

在Eclipse Neon中,如果我编写这个Java代码:

Stream<Object> stream = Stream.builder().build();
Run Code Online (Sandbox Code Playgroud)

我没有泄漏警告,但如果我实施Stream,如

public class MyStream<T> implements Stream<T> {
    // implementation
}
Run Code Online (Sandbox Code Playgroud)

我写了类似的代码

Stream<Object> stream = new MyStream<>();
Run Code Online (Sandbox Code Playgroud)

我收到Resource leak: 'stream' is never closed警告 这只发生在Eclipse中,而编译时javac不会发出任何警告.

注意我不是在寻找关于如何关闭流等的答案,而是寻找解释同一界面的这种不同行为的原因的答案.

Nic*_*ckL 3

在第一种情况下,您不会创建资源的实例。在第二种情况下,你是。

Eclipse文档说明如下

所有权/责任
上述诊断基本上假设创建资源类型实例的方法也负责关闭该资源。[...]
- 如果一个方法通过方法调用而不是通过 new 表达式获取资源,它可能负责也可能不负责;任何问题仅被标记为潜在的资源泄漏。