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];
}
我必须做些什么才能确保每当数组中的变量值发生变化时,全局变量也会发生变化。我可以在调试器中看到,当我在方法内部时,值会被更改,但是一旦我出去,更改就会被丢弃。
答案 0 :(得分:1)
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];
}