Java 7にあると思っXMLStreamReader
ていましたが、そうではありません。AutoCloseable
StAX リーダー/ライター インターフェイスが実装のために改造されなかった (または改造されるべきではない) 技術的な理由はありますAutoCloseable
か? それらにはすでに close メソッドがあり、その意図は の close メソッドと変わりませんAutoCloseable
。
質問する
1347 次
2 に答える
9
close()
あなたがの方法にAutoCloseable
近づいたら:
このリソースを閉じて、基になるリソースをすべて放棄します。このメソッドは、try-with-resourcesステートメントによって管理されるオブジェクトに対して自動的に呼び出されます。
このストリームを閉じて、それに関連付けられているシステムリソースを解放します。ストリームがすでに閉じられている場合、このメソッドを呼び出しても効果はありません。
close()
の方法はXMLStreamReader
言うのに対し:
このリーダーに関連付けられているすべてのリソースを解放します。このメソッドは、基になる入力ソースを閉じません。
実際、入力ソースは、インターフェイスReader
を実装するによって管理されCloseable
ます。したがって、 try-with-ressourceに近づくことができるのはリーダーです。
例えば :
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = null;
try (FileReader fr = new FileReader("file.xml")) { //Will close the FileReader
reader = factory.createXMLStreamReader(fr);
reader.close();
}
catch (XMLStreamException ex) {
if(reader!=null)try {
reader.close();
} catch (XMLStreamException ex1) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex1);
}
}
于 2012-06-14T10:40:53.357 に答える
0
彼らがこれらのものを作ることができなかった技術的な理由はありませんAutoCloseable
。close() と呼ばれるメソッドを探すのが怠惰または不十分な時間に帰着するだけだと思います。
于 2012-11-09T05:13:12.257 に答える