我期望在Java 7中找到XMLStreamReaderAutoCloseable。但是,事实并非如此。是否出于技术原因不对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);
        }
    }

10-08 03:52