Java 共享重复方法的独立对象
我知道这可能是我正在研究的非常愚蠢的事情,但我已经花了几个小时研究这个小问题 基本上,我有两个使用相同ArrowControl类的对象:Java 共享重复方法的独立对象,java,android,Java,Android,我知道这可能是我正在研究的非常愚蠢的事情,但我已经花了几个小时研究这个小问题 基本上,我有两个使用相同ArrowControl类的对象: public class ArrowControl extends BoundaryBox{ private static float value = 0; public ArrowControl() {} public float getValue() { return value; } publ
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()所等于的值
有人知道为什么或者如何解决这个问题吗?因为您已经将它定义为静态的
private static float value = 0;
因此这两个实例共享它。因为您已将其定义为静态
private static float value = 0;
所以这两个实例共享它。看起来是因为变量是静态的。这意味着在ArrowControl的所有实例中使用相同的控件
将其设为实例变量,这应该会消失。(删除“static”)看起来是因为变量是静态的。这意味着在ArrowControl的所有实例中使用相同的控件
将其设为实例变量,这应该会消失。(删除“static”)太尴尬了:(…我怎么没看到that@JaredDrake每个人都会遇到:)祝你好运。太尴尬了:(…我怎么没看见that@JaredDrake每个人都会遇到:)祝你好运。谢谢。真不敢相信我没看到,谢谢。真不敢相信我居然没看到。