这里的注释是什么意思?

时间:2019-04-14 09:26:58

标签: java performance exception jvm

我正在学习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的好处是什么?

1 个答案:

答案 0 :(得分:0)

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

在评论中说,您只能在predecessor()不能为null的情况下使用null,因此它会检查以确保它不是 valueField="FundClassId" defaultItem = "FundClassId" (valueChange)="flashClassChanged($event)"></kendo-dropdownlist> -但如果是,那么行为是不确定的,您应该通知用户。

也许对JVM有一些特定的用途,但是对它有更深入了解的人将不得不与之交谈。