Используйте Objects.requireNonNull(Object)для этого.
Проверяет, что указанная ссылка на объект не является нулевой. Этот метод предназначен в первую очередь для проверки параметров в методах и конструкторах, [...]
В вашем случае это будет:
public void useObject(CustomObject customObject) {
object = customObject.getObject();
Objects.requireNonNull(object);
// Do stuff using object, which would throw a NPE if object is null.
}
Эта функция сделана для целей, которые вы упомянули, т. Е. Явно помечает то, что не должно быть нулем; также в производстве. Большим преимуществом является то, что вы убедитесь, что вы найдете нулевые значения именно там, где они не должны появляться в первую очередь. У вас будет меньше проблем с отладкой, вызванной нулевыми значениями, которые были переданы туда, где их не должно быть.
Еще одним преимуществом является дополнительная гибкость в отношении нулевых проверок в отличие от assert. Хотя assertэто ключевое слово для проверки логического значения, Objects.requireNonNull(Object)оно является функцией и поэтому может быть встроено в код гораздо более гибким и читаемым. Например:
Foo foo = Objects.requireNonNull(service.fetchFoo());
// You cannot write it in on line.
Bar bar = service.fetchBar();
assert bar != null;
service.foo(Objects.requireNonNull(service.getBar()));
// You cannot write it in on line.
Bar bar = service.getBar();
assert bar != null;
service.foo(bar);
Имейте в виду, что Objects.requireNonNull(Object)это исключительно для нулевой проверки, где assertобобщается. assertимеет несколько другие цели в этом отношении, то есть, прежде всего, тестирование Он должен быть включен, чтобы вы могли включить его для тестирования и отключить для производства. В любом случае, не используйте его для производственного кода. Это может замедлить работу приложения с ненужными и сложными проверками, которые предназначены для тестирования. Используйте его для отделения проверок только для проверки от проверок, которые также предназначены для производства.
Проверьте официальную документацию для деталей о assert.
-eaили эквивалентный.