gpt4 book ai didi

java - 令人费解的行为(Java 实例、数组和 GWT)

转载 作者:行者123 更新时间:2023-12-01 17:39:07 25 4
gpt4 key购买 nike

我不确定这是 Java 行为还是流氓 GWT 行为。但就这样吧。

我有一个 2D vector 类,称为 Vector2。在我的程序中,我对由此类实例表示的 2D 粒子进行了一些模拟。我有两个 Vector2 数组,m_x 和 m_oldx,它们是另一个类的成员,具有执行某些处理的函数。该函数的一部分如下,我对其行为感到非常困惑:

Vector2 old = m_x[i];

Vector2 test = new Vector2(9.0f,9.0f);
m_x[i] = test;

// 1: at this point, m_x[i]'s values are 9.0,9.0
m_oldx[i] = old;
// 2: at this point, m_x[i]'s values are 100.0,100.0 - their original values before I assigned test to m_x[i]!

所以基本上,由于我将 old 分配给 m_oldx 数组,m_x[i] 的值被重置为其原始值!它不再等于我之前分配给它的测试变量。

这肯定不对吧?但这就是发生在我身上的事情。我应该再说一遍,我在这里使用 GWT - 即该代码由 Google 编译器编译为 Javascript。这是常规的 java 行为还是 GWT 做错了什么?感谢您的帮助...撕掉我的头发:(

最佳答案

当出现这样的问题时,我的第一个想法是 m_x 和 m_oldx 在某个时刻被设置为彼此相等,因为 Java 按值而不是创建副本将实例传递给变量。例如,如果在任何时候您有:

m_oldx = m_x;

m_x = m_oldx;

这会导致这个问题。

关于java - 令人费解的行为(Java 实例、数组和 GWT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3104753/

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