XMLStreamReader
がJava 7でAutoCloseable
であると予想されましたが、そうではありません。 AutoCloseable
を実装するためにStAXリーダー/ライターインターフェイスが改造されていない(またはすべきではない)技術的な理由はありますか?彼らはすでにcloseメソッドを持っていますが、その目的はcloseメソッドのAutoCloseable
と変わりません。Java 7でStAXクラスがARM用にレトロフィットされていない理由
8
A
答えて
8
あなたはclose()
method of AutoCloseable
に近い見てみると:
は、任意の基礎となるリソースを放棄、このリソースを閉じます。このメソッドは、try-with-resourcesステートメントで管理されているオブジェクトで自動的に呼び出されます。
はこのストリームを解放、それに関連するすべてのシステムリソースを閉じます。ストリームがすでに閉じられている場合、このメソッドを呼び出すことは効果がありません。
close()
method ofXMLStreamReader
一方
は言う:
は、このリーダーに関連付けられたリソースを解放します。 このメソッドは基本となる入力ソースを閉じません。
実際の入力ソースがCloseable
インタフェースを実装Reader
によって管理されます。だから、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);
}
}
0
彼らはこれらの事をAutoCloseable
作っていなかった理由技術的な理由はありません。私はそれがちょうど怠惰になるか、close()と呼ばれるメソッドを探すのに不十分な時間になると考えています。
関連する問題
- 1. CSSクラスが適用されない理由を教えてください。次
- 2. 現在Windows 7でFirebugが動作していない理由
- 3. バックグラウンドのグラデーションビューが顧客にロードされない理由UINavigationControllerクラス
- 4. 新しいキーワードがクラスの既存のオブジェクトで使用されている理由とその理由
- 5. intellijを使用してwsdlをjavaクラスに変換できない理由
- 6. jetbrainのMPSがJavaクラスのパッケージ構造に従っていない理由
- 7. 私のクラス作成がスキップされている理由
- 8. Finder UtilクラスがLiferay 7で生成されていないサービスビルダー
- 9. 私のクラスが受け入れられない理由
- 10. クラスフィールドがオーバーライドされない理由
- 11. Rx-Javaレトロフィットが応答しない
- 12. Javaプラグインが推奨されない理由
- 13. Javaセッションが破壊されない理由
- 14. Control.Monad.Instancesがデフォルトで実装されていない理由( - >)
- 15. スライスポインタのインデックスがゴランで許可されていない理由
- 16. ビルダーのデザインパターンでネストされたクラスを使用する理由、同じクラスのオブジェクトをビルドするためにセッターを使用できない理由
- 17. IDが再シードされない理由
- 18. observableが購読されない理由
- 19. データが送信されない理由
- 20. 例外がキャッチされない理由
- 21. ターミナルディスプレイが表示されない理由
- 22. メニューオプションが表示されない理由
- 23. Resource.Designer.csが作成されない理由
- 24. JDKがインストールされていないJava 7トリガ・ヒープ・ダンプ
- 25. jqueryで返されている理由とわからない理由
- 26. @ angle/coreモジュールのインポートに相対パスが使用されていない理由
- 27. 親プロジェクトのクラスがモジュールでアクセスできない理由
- 28. ビットフィールドがクラスの静的データメンバーとして許可されない理由
- 29. 自分のドロップダウンリストがIE 7で動作しない理由
- 30. Java管理されていないメモリストリーム
私は個人的にそのコードを再構築します。例外が発生した場合はfinallyブロックにreader.close()を入れる必要があります(catchはXMLStreamExceptionのみですが、チェックされていない例外もスローできます)。 try-finallyを他のtryブロックの中に入れます。 – Trejkaz