Bunu uygulamak API boş sonuçla sonuçlanacak bir yineleyici satın mantığı gerektiren durumlarda kullanabilirsiniz. Yani bir boş döndürmek yerine boş bir yineleyici döndürürsünüz. Ayrıca, bazı belleği ve test amacıyla kaydetmek için kullanabilirsiniz. geri dönüşü olarak boş önlemek ve aynı zamanda bazı belleğe kaydeder
Örnek: Bir eleman eklenir kadar yukarıdaki sınıfta
class LazyObjectInitialization {
private Collection<String> items;
public final Iterator<String> items() {
if(items == null || items.isEmpty()) {
return Collections.emptyIterator();
}
return items.iterator();
}
public final add(String item) {
if(items == null) {
items = new ArrayList<>();
}
items.add(item);
}
}
, daha sonra alan items
intialized değildir. items()
yönteminde beklenen davranışı sağlamak için boş bir yineleyici döndürüyoruz. Bundan fayda aşağıdaki gibidir:
- Daha küçük bellek tüketimi: gerçekten ihtiyaç duyulduğunda
- sınıf bellek ayrılamadı
bellek mutasyon
- Daha küçük
- biz nesneye şey eklemek kadar asla yeni yineleyici örneği oluşturmuyoruz.
- Biz 'olası kopya' olarak belirtilen boş
Maalesef linki asla geri soruma cevap vermez ya da ben cevabı anlayamadık olabilir. Birisi, hangi senaryoda ihtiyaç duyulduğunu açıklayabilir mi? – user3366706
Soru şu cevabı veriyor: 'Ben bu durumda arayanlar için boş bir iterator dönmek istiyorum 'null' için test etmek zorunda değilsiniz :) –
tamam teşekkürler :) bilmeden buna cevap verdim (http: // stackoverflow Yeni Bir Soru adına soru/cevap/821536/java-yineleyici-bir-boş-koleksiyon-bir-parametreli-tipi soru)! Yani bu soru, yinelenen bir cevap olarak etiketlenebilir. yinelenen bir soru olarak değil. Şaka yapıyorum, suçlama yok. – user3366706