10

Java 7にあると思っXMLStreamReaderていましたが、そうではありません。AutoCloseableStAX リーダー/ライター インターフェイスが実装のために改造されなかった (または改造されるべきではない) 技術的な理由はありますAutoCloseableか? それらにはすでに close メソッドがあり、その意図は の close メソッドと変わりませんAutoCloseable

4

2 に答える 2

9

close()あなたがの方法にAutoCloseable近づいたら:

このリソースを閉じて、基になるリソースをすべて放棄します。このメソッドは、try-with-resourcesステートメントによって管理されるオブジェクトに対して自動的に呼び出されます。

またはCloseable close()方法

このストリームを閉じて、それに関連付けられているシステムリソースを解放します。ストリームがすでに閉じられている場合、このメソッドを呼び出しても効果はありません。

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 に答える