Вы не хотите использовать Optional
в качестве входного параметра; это анти-паттерн. Проверьте эту статью на DZone .
Что вы можете сделать, чтобы улучшить свой код, так:
User user = null;
public authCheck(User user) {
Objects.requireNonNull(user, "No user!");
if (Objects.requireNonNull(user.getStuff(), "User has no stuff").isEmpty()) {
throw new RuntimeException("User has no stuff");
}
this.user = user;
}
(имена методов должны начинаться со строчной буквы в Java.)
Вы могли бы еще сжать это, но вопрос в том, будет ли код более понятным.
Нет ничего плохого в null
, если используется правильно. Это означает «неопределенный», и у нас нет ненулевых ссылок на объекты в Java, как в Kotlin или Scala.
Но, возможно, вы могли бы немного подумать о том, как создаются User
объекты, чтобы вообще избежать этой проблемы. Возможно, вы могли бы использовать шаблон проектирования Builder. Чаще всего переосмысление вашего кода может избежать подобных ситуаций.