我预计XMLStreamReader
会AutoCloseable
在 Java 7 中找到。但是,事实并非如此。没有(或不应该)改装 StAX 读/写器接口以实施是否有技术原因AutoCloseable
?他们已经有了 close 方法,其意图与AutoCloseable
.
问问题
1347 次
2 回答
9
如果您更接近以下close()
方法AutoCloseable
:
关闭此资源,放弃任何基础资源。此方法在由 try-with-resources 语句管理的对象上自动调用。
关闭此流并释放与其关联的任何系统资源。如果流已经关闭,则调用此方法无效。
释放与此 Reader 关联的所有资源。此方法不会关闭底层输入源。
实际上,输入源由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 回答