这里的笔记是什么意思?

问题描述 投票:0回答:1

我正在学习JDK8的AbstractQueuedSynchronizer的源代码,我不知道'null check'的目的:

/**
 * Returns previous node, or throws NullPointerException if null.
 * Use when predecessor cannot be null.  The null check could
 * be elided, but is present to help the VM.
 *
 * @return the predecessor of this node
 */
final Node predecessor() throws NullPointerException {
    Node p = prev;
    if (p == null)
        throw new NullPointerException();
    else
        return p;
}

这些注释告诉我们可以省略空检查,但是有助于VM - 为什么? VM有什么好处?

java performance exception jvm
1个回答
0
投票

从设计的角度来看,当您编写API时,最好将处理未定义行为的责任传递给用户,而不是尝试自己处理它。

在评论中,它说你应该只使用predecessor(),因为它不能是null,因此它检查以确保它不是null - 但如果是,那么行为是未定义的,你应该通知用户。

也许JVM特有的东西对它有用,但是对它有更好了解的人将不得不谈论它。

© www.soinside.com 2019 - 2024. All rights reserved.