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. クラスフィールドがオーバーライドされない理由
- 3. 私のクラスが受け入れられない理由
- 4. Control.Monad.Instancesがデフォルトで実装されていない理由( - >)
- 5. メニューオプションが表示されない理由
- 6. Resource.Designer.csが作成されない理由
- 7. 例外がキャッチされない理由
- 8. Xcode警告:アプリケーション実行ファイルにサポートされていないアーキテクチャが含まれています:arm、arm(-19031)
- 9. JDKがインストールされていないJava 7トリガ・ヒープ・ダンプ
- 10. メインスタイルシートがWordPressフロントエンドに適用されている理由
- 11. 指定されたイニシャライザがg ++に実装されていない理由
- 12. Java管理されていないメモリストリーム
- 13. 名前マングリングが標準化されていない理由
- 14. コントローラとHTMLがリンクされていない理由
- 15. Observerが定義されていない理由
- 16. レトロフィットが動作していないことを使用してアンドロイドからレストウェブサービス経由でログイン
- 17. ファイルがinstallshieldインストーラによって更新されない理由
- 18. 自分のドロップダウンリストがIE 7で動作しない理由
- 19. OpenCLカーネルが特定のパラメータで実行されない理由について
- 20. スタックヒープ衝突が異なるセグメントに実装されていない理由
- 21. const修飾子が破棄された理由を理解していない
- 22. セキュリティが強化されている理由と、JSONまたはXMLの理由
- 23. ポインタが明白な理由で何も表示されない
- 24. ARM v7でのアラインメントされていないメモリアクセス
- 25. Javaのデフォルトパラメータがないという技術的な理由
- 26. TempDataがセッションによってバックアップされている理由
- 27. 私のplayframeworkファストタグが何らかの理由でピックアップされていない
- 28. Javaでクローン可能なデフォルトのクローン()がない理由8
- 29. エンティティにIDが設定されていない理由spring-data-jpa save
- 30. IE6/7バグ:論理的な理由のない空白があります
私は個人的にそのコードを再構築します。例外が発生した場合はfinallyブロックにreader.close()を入れる必要があります(catchはXMLStreamExceptionのみですが、チェックされていない例外もスローできます)。 try-finallyを他のtryブロックの中に入れます。 – Trejkaz