2013-12-23 21 views
0

我知道這可能是我正在查找的非常愚蠢的東西,但我花了幾個小時來狩獵這個小問題。分享重複方法的單獨對象

基本上,我有使用相同ArrowControl 2類對象:

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()等於的值。

有誰知道爲什麼或者如何解決這個問題?

回答

3

因爲您已將其定義爲靜態。

private static float value = 0; 

所以這兩個實例分享它。

+0

如此尷尬:(...我怎麼看不到那 –

+0

@ JaredDrake適合所有人:)祝你好運。 –

3

它看起來像是因爲變量是靜態的。這意味着在ArrowControl的所有實例中都使用同一個實例變量

使其成爲實例變量,這應該消失。 (刪除「靜態」)

+0

謝謝。我不相信我沒有看到。 –