共享重复方法的单独对象

时间:2013-12-23 18:18:20

标签: java android

我知道这可能是我非常愚蠢的事情,但是我花了好几个小时来解决这个小问题。

基本上,我有两个使用相同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()等于。

有人知道为什么或如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

因为您已将其定义为静态。

private static float value = 0;

所以两个实例共享它。

答案 1 :(得分:3)

看起来是因为变量是静态的。这意味着在ArrowControl的所有实例中使用相同的一个

使它成为一个实例变量,这应该消失。 (删除“静态”)