Привіт колеги розробники Java,
Я знаю, що тема може бути трохи, in advance
оскільки JDK8 ще не випущений (і поки що не ..), але я читав деякі статті про виразів Лямбда, і особливо частину, пов'язану з новим API колекції, відомим як Stream.
Ось приклад, наведений у статті Java Magazine (це алгоритм популяції видри ..):
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, я вважаю цю функцію досить небезпечною, і її доведеться використовувати лише як показано нижче:
- Розробник, щоб переконатися, що немає нульового значення (можливо, використовуючи попередній .filter (o -> o! = Null))
- Розробник повинен переконатися, що додаток ніколи не генерує нульову видру або спеціальний об’єкт NullOtter, з яким потрібно мати справу.
Який найкращий варіант чи будь-який інший варіант?
Дякую!