Use Objects.requireNonNull(Object)
para isso.
Verifica se a referência de objeto especificada não é nula. Este método foi desenvolvido principalmente para validação de parâmetros em métodos e construtores, [...]
No seu caso, isso seria:
public void useObject(CustomObject customObject) {
object = customObject.getObject();
Objects.requireNonNull(object);
// Do stuff using object, which would throw a NPE if object is null.
}
Esta função é feita para os fins mencionados, ou seja, marque explicitamente o que não deve ser nulo; também em produção. O grande benefício é que você encontra valores nulos exatamente onde eles não devem ocorrer em primeiro lugar. Você terá menos problemas ao depurar problemas causados por valores nulos que foram passados em algum lugar onde não deveriam estar.
Outro benefício é a flexibilidade adicional em relação às verificações nulas, em contraste com assert
. Embora assert
seja uma palavra-chave para verificar um valor booleano, Objects.requireNonNull(Object)
é uma função e, portanto, pode ser incorporada ao código muito mais flexível e legível. Por exemplo:
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);
Lembre-se de que Objects.requireNonNull(Object)
é exclusivamente para verificação nula onde assert
é generalizada. assert
tem objetivos ligeiramente diferentes a esse respeito, ou seja, principalmente testes. Ele deve estar ativado, para que você possa testá-lo e desativá-lo para produção. De qualquer forma, não o use para código de produção. Isso pode desacelerar o aplicativo com validações desnecessárias e complicadas destinadas a testes. Use-o para separar verificações apenas de testes das verificações destinadas também à produção.
Confira a documentação oficial para obter detalhes sobre assert
.
-ea
ou equivalente.