我知道这可能是我非常愚蠢的事情,但是我花了好几个小时来解决这个小问题。
基本上,我有两个使用相同ArrowControl类的对象:
public class ArrowControl extends BoundaryBox{
private static float value = 0;
public ArrowControl() {}
public float getValue() {
return value;
}
public void setValue(float newValue) {
value = newValue;
}
}
但是,当我在另一个类中使用它们时:
public Panel(Context context, AttributeSet attrs) {
ArrowControl upControl = new ArrowControl();
ArrowControl downControl = new ArrowControl();
upControl.setValue(1);
//upControl.getValue() == 1
downControl.setValue(2);
//upControl.getValue() == 2
}
每当我将upControl.getValue()设置为等于1.然后当我在设置downControl后再次登录时,upControl.getValue()等于downControl.getValue()等于。
有人知道为什么或如何解决这个问题吗?
答案 0 :(得分:3)
因为您已将其定义为静态。
private static float value = 0;
所以两个实例共享它。
答案 1 :(得分:3)
看起来是因为变量是静态的。这意味着在ArrowControl的所有实例中使用相同的一个
使它成为一个实例变量,这应该消失。 (删除“静态”)