Halo sesama pengembang Java,
Saya tahu subjeknya mungkin sedikit in advance
karena JDK8 belum dirilis (dan bukan untuk saat ini ..) tetapi saya membaca beberapa artikel tentang ekspresi Lambda dan khususnya bagian yang terkait dengan API koleksi baru yang dikenal sebagai Stream.
Berikut adalah contoh yang diberikan dalam artikel Majalah Java (ini adalah algoritma populasi berang-berang ..):
Set<Otter> otters = getOtters();
System.out.println(otters.stream()
.filter(o -> !o.isWild())
.map(o -> o.getKeeper())
.filter(k -> k.isFemale())
.into(new ArrayList<>())
.size());
Pertanyaan saya adalah apa yang terjadi jika di tengah iterasi internal Set, salah satu otter adalah null?
Saya berharap NullPointerException dilemparkan tetapi mungkin saya masih terjebak dalam paradigma pengembangan sebelumnya (non-fungsional), dapatkah seseorang mencerahkan saya tentang bagaimana hal ini harus ditangani?
Jika ini benar-benar memunculkan NullPointerException, menurut saya fiturnya cukup berbahaya dan harus digunakan hanya seperti di bawah ini:
- Pengembang untuk memastikan tidak ada nilai null (mungkin menggunakan .filter sebelumnya (o -> o! = Null))
- Pengembang untuk memastikan aplikasi tidak pernah menghasilkan null otter atau objek NullOtter khusus untuk ditangani.
Apa opsi terbaik, atau opsi lain?
Terima kasih!