XMLStreamReader
'u Java 7'de AutoCloseable
olarak bulmayı bekledim. Ancak durum böyle değil. StAX okuyucu/yazar arayüzlerinin neden AutoCloseable
'u uygulamak için donatılmamış (veya edilmemeli) teknik bir nedeni var mı? Zaten yakın yöntemleri AutoCloseable
'un yakın yönteminden farklı olmayan yakın yöntemleri vardır.Neden StAX sınıfları Java 7 için ARM uyarlanmış değildi?
cevap
Eğer close()
method of AutoCloseable
yakın bakarsak:
altta yatan herhangi bir kaynak devretmiş bu kaynağı kapatır. Bu yöntem, try-with-resources ifadesi tarafından yönetilen nesneler üzerinde otomatik olarak çağrılır.
Hatta Closeable
close()
method:
bu akışı ve bültenleri onunla ilişkili tüm sistem kaynakları kapatır. Akış zaten kapalıysa, bu yöntemin çağrılmasının bir etkisi yoktur.
close()
method ofXMLStreamReader
Oysa
diyor ki:
bu Reader ile ilişkili tüm kaynakları serbest bırakır. Bu yöntem, temel giriş kaynağını kapatmaz.
Aslında giriş kaynağı Closeable
arabirimi uygulamak Reader
tarafından yönetilir. Yani, numaralı deneme-of-ressource içinde yakın olabilir. Örneğin
:
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);
}
}
onlar bu şeyleri AutoCloseable
yapmış olabilir neden hiçbir teknik sebep yoktur. Ben sadece tembelliğe ya da close() olarak adlandırılan yöntemleri aramak için yetersiz zamana iner.
- 1. StAX
- 2. Java sınıfları
- 3. Scala stdlib'de neden ARM yok?
- 4. Mac için İkili Java 7
- 5. Java Enum Temel Sınıfları
- 6. Java - Sınıfları karşılaştırmak?
- 7. java kısmi sınıfları
- 8. ARM ölçeğini ARM
- 9. Java kütüphanesi sınıfları için kaynak kodu
- 10. gerçekten emin değildi lua
- 11. Java stax ayrıştırıcısını InputStreams ile değil, dizelerle mi besleyin?
- 12. ARM Translation
- 13. Linux ARM için Android işletim sisteminde çalışan ARM
- 14. Java - Dinamik olarak yükleme sınıfları
- 15. Maven2 neden her derlemede stax-ex güncellemelerini kontrol ediyor?
- 16. Java olmayan sınıfları findbugs'dan gizleme
- 17. Java 8'de Java 8, Java 7
- 18. LLVM/ARM için Raspberry Pi
- 19. setDragImage çalışmıyor - Java 7
- 20. Java 7, Windows
- 21. 7 Java 7 ile org.json Java kütüphanesi nasıl kullanılır
- 22. Java 7, Web Start
- 23. Tür sınıfları neden uygulamak zordu?
- 24. Alt paketler neden paket özel sınıfları göremiyor?
- 25. Java 7 - satırlı dizeleri
- 26. Jython modülünden Java sınıfları içe aktarılamıyor
- 27. Java 6/7 Komut Satırı Komut Satırı
- 28. Kavanoz başlangıcında java sınıfları/kütüphaneleri önyükleniyor mu?
- 29. Java: JPA sınıfları, Tarih Tarih saat
- 30. Derleme için Java 7'yi kullanmak için sbt kurmak?
Şahsen bu kodu yeniden yapılandırabilirim. Bir istisna meydana geldiğinde reader.close() son olarak bloke edilmiş olmalıdır (yakalamanız sadece XMLStreamException içindir ancak kontrol edilmeyen bir istisna da atabilir.) Ayrıca okuyucuya ait boş çekimi kaldırır ve sadece ikinci düzey Sonunda diğer deneme bloğu içinde deneyin. – Trejkaz