Я хотел бы знать, есть ли чистый способ обработки исключения нулевого указателя в отображении без слишком большого количества проверок нуля. Для следующего кода существуют различные способы обработки нулевой проверки:
record.getFoos().forEach(foo -> foo.setBar("Bar!")); //record.getFoos() might be null
Опция 1:
if(record.getFoos() !=null){
} else {
// set default value
}
Опция 2:
Optional.ofNullable(record.getFoos()).ifPresent(foo -> foo.setBar("Bar!")).orElse(new Bar("Default"));
Вариант 3:
Используйте десериализатор клиента при сопоставлении JSON с объектами POJO, чтобы убедиться, что ни одно из обязательных свойств не равно нулю, и замените его на значение по умолчанию.
Без комментариев по поводу Опция 1 , так как это худший вариант, когда речь идет о количестве кода, который нам нужно написать.
Я думаю, вы можете подумать, что в option 2 нет ничего плохого, но проблема в том, что там будет слишком много мест и что ни одно из обязательных свойств не будет нулевым. Это не будет действительно масштабируемым, если вы имеете дело с тысячами свойств и тоннами перестановок.
Опция 3 также кажется приемлемой, но она очищается от ошибок и не масштабируется так как нам нужно убедиться, что для любого нового свойства обновляется десериализатор, и это легко может выйти из-под контроля c.
Мне было интересно, есть ли другой способ в Spring Framework, где мы можем как-то определить подход что всякий раз, когда исключение нулевого указателя генерируется в определенном пакете, тогда вместо выхода из метода продолжить работу и использовать значение по умолчанию для соответствующего объекта? В этом случае нам просто нужно сказать, что значением по умолчанию для Bar
является "Default"
.