gpt4 book ai didi

对实例变量的 Java 本地引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:16 25 4
gpt4 key购买 nike

在遍历 libgdxStage 的源代码,我遇到了这个段:

public void draw () {
Camera camera = viewport.getCamera();
camera.update();

if (!root.isVisible()) return;

Batch batch = this.batch;
if (batch != null) {
batch.setProjectionMatrix(camera.combined);
batch.begin();
root.draw(batch, 1);
batch.end();
}

if (debug) drawDebug();
}

( Link on GitHub .)

我感兴趣的是这一行:Batch batch = this.batch;

我的第一个猜测是一些缓存改进。我是对的,还是有其他原因避免直接使用实例变量?

最佳答案

在早期的 Java 时代,这是恕我直言 sometimes used as an optimization , 以避免访问成员变量。然而现在我相信,Hotspot 可以比我们人类更好地优化。

但是,在这种情况下,它可能用于防止并发修改该变量时出现问题,因为可能需要 begin()end()在同一个实例上被调用。

关于对实例变量的 Java 本地引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28357410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com