Objects.requireNonNull 是否不如旧方法有效?
从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
}
他说,调用涉及在JVM调用堆栈上放置另一个方法,并且会导致比简单检查更差的性能。requireNonNull
== null
所以我的问题是:是否有任何证据表明使用这些方法会产生性能损失?Objects.requireNonNull