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

标签 java arrays gwt instance

我不确定这是 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/

相关文章:

android - 访问短信移动应用程序

java - 在 GWT 应用程序中处理授权

css - GWT UiBinder - 基于网格的 css 样式

java - 使用假设角色同时访问属于不同帐户的两个 dynamodb 表不起作用

java - 如何定期调用API?

java - ServletActionContext.getRequest().removeAttribute() 不起作用

php - 传递 Javascript 数组 -> PHP

c++读取对象数组会导致SIGSEGV

java - Jsoup 错误将 node.element 转换为 element.Element

java - 堆数组 - 删除根