Xin chào các nhà phát triển Java,
Tôi biết chủ đề có thể là một chút in advance
vì JDK8 vẫn chưa được phát hành (và dù sao thì không phải bây giờ ..) nhưng tôi đã đọc một số bài báo về các biểu thức Lambda và đặc biệt là phần liên quan đến API bộ sưu tập mới được gọi là Stream.
Đây là ví dụ được đưa ra trong bài báo của Tạp chí Java (nó là một thuật toán quần thể rái cá ..):
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());
Câu hỏi của tôi là điều gì sẽ xảy ra nếu ở giữa lần lặp nội bộ Đặt, một trong những con rái cá là rỗng?
Tôi mong đợi một NullPointerException được ném nhưng có lẽ tôi vẫn bị mắc kẹt trong mô hình phát triển trước đó (phi chức năng), ai đó có thể chỉ cho tôi cách xử lý điều này không?
Nếu điều này thực sự ném NullPointerException, tôi thấy tính năng này khá nguy hiểm và sẽ chỉ được sử dụng như bên dưới:
- Nhà phát triển để đảm bảo không có giá trị null (có thể sử dụng .filter trước đó (o -> o! = Null))
- Nhà phát triển để đảm bảo ứng dụng không bao giờ tạo rái cá null hoặc một đối tượng NullOtter đặc biệt để xử lý.
Tùy chọn tốt nhất là gì, hoặc bất kỳ tùy chọn nào khác?
Cảm ơn!