Java 如何强制编译器显示警告消息?
正在编写以下代码Java 如何强制编译器显示警告消息?,java,compiler-warnings,Java,Compiler Warnings,正在编写以下代码 ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("myContext.xml"); …将强制eclipse显示此警告 Resource leak: 'applicationContext' is never closed 这是因为我应该调用applicationContext.close() 我自己怎么做?我如何指示用户在使用我编写的类实例化的对象之
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("myContext.xml");
…将强制eclipse显示此警告
Resource leak: 'applicationContext' is never closed
这是因为我应该调用applicationContext.close()
我自己怎么做?我如何指示用户在使用我编写的类实例化的对象之前或之后调用特定的方法。您看到的是Java 7的“资源试用”功能
public class MyClose implements AutoCloseable {
@Override
public void close() {
}
}
罚款:
我也很好:
MyClass x = null;+
try {
x = new MyClass();
...
} finally {
x.close();
}
警告:
MyClass x = new MyClass();
...
正是AutoCloseable
导致IDE参与缺少的close()/try
。
其中一个原因是,单击警告可能会建议使用资源尝试修复它(在某些IDE中)
但是有一种代码设计模式
在这里,我们让子类实现(覆盖)
f
和g
——需求,并注意流程逻辑是自己完成的,在一个公共的最终流程
——服务-。你所说的“我自己怎么做?”?从您的问题标题中,我认为您在通过控制台编译时需要相同的警告。您所说的指导用户是什么意思?用户是谁?如果你能提供更多关于项目细节的细节,那将非常有帮助。你在做编译器吗?GUI?IDE?还有什么?我不认为这是一个编译器警告。你是否使用一些代码检查插件,比如findbugs?我使用的是Eclipse,所以当我编写我提到的代码时,Eclipse显示了提到的警告消息。因此,我想指示用户,正如Eclipse通过警告指示我的那样,做任何类编写器认为必须我做的事情,以正确使用该类。感谢Joop,他说这是Java 7特有的特性,实现的接口AutoCloseable
感谢您的回答。但是我不明白你在回答最后一个例子时想说什么。你可以自己在基类中用一个不可重写的函数(process
here)调用控制流和准备数据。然后,变量代码必须由子类给出。
MyClass x = new MyClass();
...
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 ...
}
}