为什么DataOutputStream不会创建“资源泄漏:流永不关闭”警告。
public static void main(String[] args) {
try{
DataOutputStream o = new DataOutputStream(System.out);
o.writeInt(12);
}
catch(IOException ex){
}
}
我认为这是因为它扩展了FilterOutputStream但是当扩展我自己的类时,它会发出警告。
答案 0 :(得分:2)
我认为编译器(至少我的Eclipse编译器)知道永远不应该关闭System.out
。试试DataOutputStream o = new DataOutputStream(new FileOutputStream("test"));
,您就会看到警告。
答案 1 :(得分:1)
您可能希望为基础流创建DataOutputStream
,写入它,但不要关闭基础流,因为您想要进一步编写。因此,在这种情况下,即使DataOutputStream
未关闭,也没有资源泄漏。
然而,我有点惊讶你至少没有得到警告。
答案 2 :(得分:0)
DataOutputStream不是资源,因此没有资源泄漏。
底层文件或套接字或系统FD是资源。在这种情况下,它是System.out,它没有在此方法中打开,因此不关闭它不是资源泄漏。
如果您在此方法中打开了文件或套接字,则应该收到此IDE警告。