如何强制编译器显示警告消息?

时间:2014-06-26 15:06:53

标签: java compiler-warnings

编写以下代码......

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("myContext.xml");

...将迫使eclipse显示此警告

Resource leak: 'applicationContext' is never closed

这是因为我应该致电applicationContext.close()

我怎么能自己做?如何使用从我编写的类中实例化的对象,指示用户应该在之后之前调用之后之后调用特定方法?

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能这样做。您看到的是Java 7的try-with-resources功能。

public class MyClose implements AutoCloseable {

    @Override
    public void close() {
    }
}

精细:

try (MyClass x = new MyClass()) {
    ...

} // Automatic close

也很好:

MyClass x = null;+
try {
    x = new MyClass();
    ...
} finally {
    x.close();
}

警告:

MyClass x = new MyClass();
...

AutoCloseable引导IDE参加缺失的close()/try。 其中一个原因是点击警告可能会建议使用try-with-resources(在某些IDE中)修复它。


但是有代码设计模式

class ServiceBaseClass {
    protected Z z;

    protected YourBaseClass() {
    }

    public final void process(X x) {
        z = ...;
        ...
        f(x, y);
        ...
        g(x);
    }

    protected void f(X x, Y y) {
    }

    protected void g(X x) {
        ... z ...
    }
}

这里有一个允许子类实现(覆盖)fg - 需求 - 并且在公共最终process中注意过程逻辑是自己完成的 - 服务 - 。