我有一个简单的Java类,如下所示:
public static class NullInputStream extends InputStream {
public static InputStream wrap(InputStream src) {
return src == null ? new NullInputStream() : src;
}
@Override
public int read() throws IOException {
return -1;
}
}
此代码在Eclipse 4.5
中编译,Java合规级别1.8
。奇怪的事情正在发生。在我的环境中,编译器不会生成警告。另一位开发人员在 Resource leak: '<unassigned Closeable value>' is never closed
上收到“new NullInputStream()
”编译器警告警告。我们确定,当“Resource leak
”设置为“Warning
”时必须触发警告,并且当警告被删除为“Ignore
”时,警告就会消失。在我的Eclipse
环境中,无论“Resource leak
”设置如何,都不会触发警告。
我花了好几个小时试图找出没有触发警告的原因。我从其他开发人员环境导出/导入编译器首选项,我三重检查我不使用项目特定设置,检查java编译器版本,运行时,facet等 - 一切都是1.8
请注意。我的问题是没有触发这个特定的编译器警告,而不是类设计。我需要触发警告。其他警告,例如“Dead code
”和“Potential resource leak
”按预期工作和触发。