编写以下代码......
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("myContext.xml");
...将迫使eclipse显示此警告
Resource leak: 'applicationContext' is never closed
这是因为我应该致电applicationContext.close()
我怎么能自己做?如何使用从我编写的类中实例化的对象,指示用户应该在之后之前调用之后或之后调用特定方法?
答案 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 ...
}
}
这里有一个允许子类实现(覆盖)f
和g
- 需求 - 并且在公共最终process
中注意过程逻辑是自己完成的 - 服务 - 。