String compBut1 = "D0", compBut2 = "D0", compBut3 = "D0", playaBut1 = "D0", playaBut2 = "D0", playaBut3 = "D0";
public void changeOver()
{
String[] set = {playaBut2, playaBut3, playaBut1};
int butPos = Arrays.asList(set).indexOf(positions[posOld]);
set[butPos] = positions[posNew];
}
我必须做些什么来确保每当数组集中变量的值发生变化时,全局变量也会发生变化。我可以在调试器中看到,当我在方法内部时,值会被更改,但一旦我退出,更改就会被丢弃。
String[] set = {playaBut2, playaBut3, playaBut1};
您认为上面存储了对各个字符串的引用,因此每当这些字符串中的任何一个发生更改时,引用的字符串都会发生更改。
然而,它实际做的是将值复制到String的新实例中,并生成它们的数组。出于安全考虑,Java不允许存储引用(指针为C/C++(。
您应该做的是:创建一个全局声明的字符串数组,并直接在函数中更改它们。
String[] compBut={"D0","D0","D0"};
String[] playaBut={"D0","D0","D0"};
public void changeOver(){
int butPos = Arrays.asList(playaBut).indexOf(positions[posOld]);
playaBut[butPos] = positions[posNew];
}