在一个 Android 程序中,我注意到一个变量的值似乎意外地发生了变化。这发生在我的应用程序的单实例活动中。我一定忽略了一些明显的东西,但我有一个知道 java 的同事看着它,她也没有看到任何东西。. .
我有一个非常简单的类,SignalItem ...
public class SignalItem {
public int signal;
public int position;
public SignalItem () {
signal = 0;
position = 0;
}
}
这是我使用它的例程(它曾经做更多的事情)。. .
public static void add2Q(int signal, int position) {
SignalItem sigI = new SignalItem();
sigI.signal = signal; // signal=0. Step from here to ...
sigI.position = position; // ...here sigI.signal changes from 0 to 28!
}
在调试器中,输入参数信号和位置为 0。当我实例化 sigI 时,它的成员也是 0,因为它们应该是 0,因为这就是构造函数初始化它们的方式。但是当我从信号分配到位置分配时,sigI.signal 被设置为 28。如何/为什么?输入自变量信号保持为 0。
SignalItem 不是静态的 - 我可以创建它的多个实例(sigI2、sigI3 等)并且它们不受影响。不会重新输入 Add2Q - 在第一行设置的断点不会再次被命中。所有这一切都发生在同一个线程中(Thread[<1> main)由于 sigI 是在本地实例化的,它如何改变?
这不是调试器的工件 - 如果我将这些写入 logcat,它们都反映了我在调试器中看到的内容。提前致谢。