我目前正在调试一些代码,我不知道哪种方法是获取和设置对象数组中值的最佳方法。
例如,假设我有一个名为Object[]
的{{1}}:
foo
在我要调试的代码中,类似于Object[] foo = new Object[2];
foo[0] = new double[] {1.0, 2.0, 3.0};
foo[1] = new double[][] {{4.0, 5.0, 6.0},
{7.0, 8.0, 9.0}};
的数组具有大量可读写的元素。有时,两个线程可能会同时访问foo
的不同元素(例如,一个线程可能会对foo
和另一个foo[1][0]
进行读/写,但是两个线程都不会同时访问foo[1][1]
同时)。
我的问题是:在任何情况下,foo
的某些元素在读取/写入时的行为都不会像典型数组那样吗?
典型用法示例:(假设foo
是类成员)
情况1:尝试在函数内部读取和写入foo[1]
。
double[][] arr = (double[][]) foo[1];
arr[1][0] = 1.5; //foo should not change
情况2:尝试写入foo[1]
。
Object[] foo;
void func1() {
foo = new Object[2];
foo[0] = new double[] {1.0, 2.0, 3.0};
foo[1] = new double[][] {{4.0, 5.0, 6.0},
{7.0, 8.0, 9.0}};
}
double[] func2() {
return new double[] {10.0, 20.0};
}
public static void main(String[] args) {
func1();
((double[][]) foo[1])[0] = func2();
}