สวัสดีเพื่อนนักพัฒนา Java
ฉันรู้ว่าหัวเรื่องอาจจะเล็กน้อยin advance
เนื่องจาก JDK8 ยังไม่เปิดตัว (และยังไม่ใช่สำหรับตอนนี้ .. ) แต่ฉันกำลังอ่านบทความเกี่ยวกับนิพจน์ Lambda และโดยเฉพาะส่วนที่เกี่ยวข้องกับ API คอลเล็กชันใหม่ที่เรียกว่า Stream
นี่คือตัวอย่างตามที่ระบุในบทความนิตยสาร Java (เป็นอัลกอริธึมประชากรนาก .. ):
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());
คำถามของฉันคือจะเกิดอะไรขึ้นถ้าอยู่ตรงกลางของการวนซ้ำภายใน Set ตัวนากตัวใดตัวหนึ่งเป็นโมฆะ
ฉันคาดหวังว่า NullPointerException จะถูกโยนทิ้งไป แต่บางทีฉันอาจยังติดอยู่ในกระบวนทัศน์การพัฒนาก่อนหน้านี้ (ไม่สามารถใช้งานได้) ใครบางคนสามารถให้ความกระจ่างแก่ฉันได้ว่าควรจัดการอย่างไร
หากนี่เป็นการโยน NullPointerException จริงๆฉันพบว่าคุณลักษณะนี้ค่อนข้างอันตรายและจะต้องใช้เฉพาะดังต่อไปนี้:
- ผู้พัฒนาเพื่อให้แน่ใจว่าไม่มีค่า null (อาจใช้. filter ก่อนหน้า (o -> o! = null))
- ผู้พัฒนาเพื่อให้แน่ใจว่าแอปพลิเคชันจะไม่สร้าง Null otter หรือวัตถุ NullOtter พิเศษเพื่อจัดการ
ตัวเลือกที่ดีที่สุดคืออะไรหรือตัวเลือกอื่น ๆ ?
ขอบคุณ!