С JDK 7 я с радостью использовал метод, который он представил, чтобы отклонить значения null
, которые передаются методу, который не может их принять:
private void someMethod(SomeType pointer, SomeType anotherPointer) {
Objects.requireNonNull(pointer, "pointer cannot be null!");
Objects.requireNonNull(anotherPointer, "anotherPointer cannot be null!");
// Rest of method
}
Я думаю, что этот метод делает очень аккуратный код, который легко читается, и я пытаюсь побудить коллег использовать его. Но один (особенно знающий) коллега устойчив и говорит, что старый способ более эффективен:
private void someMethod(SomeType pointer, SomeType anotherPointer) {
if (pointer == null) {
throw new NullPointerException("pointer cannot be null!");
}
if (anotherPointer == null) {
throw new NullPointerException("anotherPointer cannot be null!");
}
// Rest of method
}
Он говорит, что вызов requireNonNull
предполагает размещение другого метода в стеке вызовов JVM и приведет к худшей производительности, чем простая проверка == null
.
Итак, мой вопрос: есть ли доказательства для оценки производительности, вызванного использованием методов Objects.requireNonNull
?