Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Вы можете использовать ifPresentOrElse (представленный в Java 9):
Optional.ofNullable(userMail)
.ifPresentOrElse(newUser::setEmail, () -> {throw new MissingServletRequestParameterException("email", "String");});
для замены этой части вашего кода:
if( null == fbUser.getEmail() ) { newUser.setEmail(userMail); }
if( null == newUser.getEmail() ) { throw new MissingServletRequestParameterException("email", "String"); }
Вы можете использовать Optional
s, но учтите, что вопрос о том, выглядит ли это «лучше», спорен.
newUser.setEmail(
Optional.ofNullable(fbUser.getEmail())
.orElse(Optional.ofNullable(userMail)
.orElseThrow(() -> new MissingServletRequestParameterException("email", "String")))
);