我期望在Java 7中找到XMLStreamReader
为AutoCloseable
。但是,事实并非如此。是否出于技术原因不对StAX读取器/写入器接口(interface)进行 retrofit (或不应 retrofit )以实现AutoCloseable
?他们已经有close方法,其意图与AutoCloseable
的close方法没有什么不同。
最佳答案
如果您靠近 close()
method of AutoCloseable
:
甚至 Closeable
close()
method:
而 close()
method of XMLStreamReader
说:
实际上,输入源由实现Reader
接口(interface)的 Closeable
管理。因此,可以与try-with-resource紧密接触的是读者。
例如 :
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);
}
}