10

我预计XMLStreamReaderAutoCloseable在 Java 7 中找到。但是,事实并非如此。没有(或不应该)改装 StAX 读/写器接口以实施是否有技术原因AutoCloseable?他们已经有了 close 方法,其意图与AutoCloseable.

4

2 回答 2

9

如果您更接近以下close()方法AutoCloseable

关闭此资源,放弃任何基础资源。此方法在由 try-with-resources 语句管理的对象上自动调用。

甚至Closeable close()方法

关闭此流并释放与其关联的任何系统资源。如果流已经关闭,则调用此方法无效。

close()方法XMLStreamReader说:

释放与此 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 回答