我使用一个ByteArrayOutputStream
用不同长度的不同值填充字节数组。我使用方法write(字节[]b)
。由于此方法继承自OutputStream
,因此可能会引发IOException。在ByteArrayOutputStream
中有一个方法write(byte[]b,int off,int len)
不会引发IOException,因此我扩展了ByteArrayOutputStream
并覆盖write(byte[]b)
方法,该方法现在也不会引发IOException:
private class ByteArrayOutputStreamNoException extends ByteArrayOutputStream
{
public ByteArrayOutputStreamNoException(int size)
{
super(size);
}
public ByteArrayOutputStreamNoException()
{
super();
}
@Override
public void write(byte[] data)
{
write(data, 0, data.length);
}
}
对于扩展类,我在eclipse 4.5.1中得到了资源泄漏的警告,因为我没有关闭代码中的流。ByteArrayOutputStream
的情况并非如此。我的扩展类有什么问题,或者我需要添加什么来删除警告?我知道我可以将SuppressWarnings
注释添加到流的每个实例化中,但我更喜欢以某种方式更改扩展类以删除警告。
Eclipse在标准Java库中有一个不需要资源泄漏警告的类列表,ByteArrayOutputStream
就是其中之一。Eclipse bug 358903中对此有详细描述。
实现这一点的代码是org的
。类列表是硬编码的,不能扩展。applyCloseableClassWhitelists
方法。日食jdt。内部的编译器。查找。引用绑定
当您扩展ByteArrayOutputStream
类时,Eclipse无法再确保不需要关闭
,因此您会收到警告。
您可以使用“try with resources”风格的try语句来解决这个问题:
try
(ByteArrayOutputStreamNoException stream = new ByteArrayOutputStreamNoException())
{
// TODO work with the stream
}
在中,我收到了一个警告,我不明白这一点。 这是理解问题还是java/eclipse问题?
Eclipse Java警告:资源泄漏:“Unassigned Closeable Value”从不关闭 漏在哪里?
eclipse“潜在资源泄漏”警告不正确。 没有警告: 警告:潜在资源泄漏:“此位置可能未关闭响应” 为什么第二种方法会引起警告? 谢谢!
我是个新手。我已经编写了这段代码,它显示那里存在资源泄漏 这是什么意思?抱歉,我太天真了。
我正在读取一个文件并将其内容存储在字符串中。代码给了我一个警告:Resource leak:。我如何解决它?