45

Hiçbir satır olmadığında, her iki query.list() ve criteria.list() boş bir değer yerine boş bir liste döndürüyor. Bunun sebebi nedir?hibernate query.list() yöntemi boş değer yerine boş değer döndürüyor

+0

null null istersiniz? Tek bir sonuç için sorguladığınızda anladım - bulunamadı, boşa dönmek için anlamlı olur. Ancak liste() daima boş bir liste döndürmelidir! Boş bir listenin anlamı nedir? – ACV

cevap

86

nedeni Effective Java 2nd Edition, Madde 43 ile tutarlılık içinde, müşteri kodu boş çekler zorlamak için değil: NULL'ları boş diziler veya koleksiyonları değil Return .

Bu, istemci kodunu daha basit ve daha az hataya açık hale getirir (ve büyük olasılıkla yöntem uygulaması da).

boş dönüş deyim muhtemel dizi uzunlukları gerçek dizileri ayrı olarak döndürülür C programlama dili bir erteleme vardır. C'de, sıfır uzunluk olarak döndürülürse bir dizi tahsis etmek için avantajı yoktur.

+0

hmm ... ama null çekleri önlediği gibi, hala liste büyüklüğünü kontrol etmeliyiz ... doğru mu? ve aynı zamanda iyi bir uygulama olarak, her zaman null için de kontrol ederiz (en azından ekibimizde). – Reddy

+12

Önemli olan nokta - bir değerin geçersiz olamayacağına (bir API'nın sözüne göre) eminseniz, boş değer olup olmadığını denetlemezsiniz. Ve hayır, boyu kontrol etmene gerek yok. Koleksiyonu yinelediğinizde, yinelemeyi atlar. – Bozho

+0

tamam ... anladım. NULL ise ve istemediğim müddetçe NPE, uygulamamı indirebilir. Ama eğer boş bir koleksiyonsa, mantığı atlayıp devam eder (genellikle boyutu kontrol ettiğimizde). Teşekkürler Peter ve Bozho. – Reddy

10

Bu yardımcıdır: Varsa olsun ya da olmasın, tüm sonuçları içeren bir liste döndürülür.