Quoth Javadoc :
Akışların BaseStream.close () yöntemi vardır ve AutoCloseable uygular, ancak neredeyse tüm akış örneklerinin kullanımdan sonra kapatılması gerekmez. Genel olarak, yalnızca kaynağı bir G / Ç kanalı olan akışların (Files.lines (Yol, Karakter Kümesi) tarafından döndürülenler gibi) kapatılması gerekir. Çoğu akış, özel kaynak yönetimi gerektirmeyen koleksiyonlar, diziler veya oluşturma işlevleri ile desteklenir. (Bir akış kapanmayı gerektiriyorsa, kaynaklarla dene ifadesinde kaynak olarak bildirilebilir.)
"Hemen hemen hepsi" ve "genellikle" belirsizdir - bir kitaplık yazıyorsanız ve Akışınızın kaynağını bu Akış'ın kullanıcılarından soyutluyorsanız, her zaman her zaman kendinize şu soruyu sormanız gerekir - "kapatmalı mıyım?" bu?" IO destekli Akışların kapatılması gerekiyor, çünkü terminal işlemleri çağrılamıyor close
, bu yüzden etkin bir şekilde Akışımın nereden geldiğini hatırlamam / belgelemem gerekiyor veya her zaman buna ihtiyacım close
var.
Sanırım nükleer seçenek, Akışları yöntemlerden döndürmemek veya JDK ekibindeki bazı insanlar tarafından yankılanan bir duygu olan Akış parametrelerini kabul etmemektir. Akarsuların pratik yararları göz önüne alındığında bunu aşırı derecede sınırlayıcı buluyorum.
Akışları kapatma konusunda en iyi uygulamalarınız nelerdir? Çevrimiçi olarak, benzer topluluk soruları üzerinde aktif olan, ancak ilgili hiçbir şey bulamayan bazı JDK milletlerinden buna bir cevap aradım.