2013-12-23 2 views
0

나는 이것이 아마도 내가 바라는 바보 일 것이라고 알고있다. 그러나 나는이 작은 문제를 사냥하면서 몇 시간을 보냈다. 나는이 같은 다른 클래스에서 사용할 때, 그러나중복 된 방법을 공유하는 객체 분리

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를 기록 할 때마다,

는 기본적으로, 같은 ArrowControl 클래스를 사용하여 두 개체가()를 설정 한 후 1로 설정합니다. 그런 다음 downControl을 설정 한 후 다시 로그온하면 upControl.getValue()는 동일한 downControl.getValue()와 같습니다.

아무도 왜이 문제를 해결할 수 있는지 알고 있습니까?

답변

3

정적으로 정의 했으므로

private static float value = 0; 

이렇게 두 인스턴스가 공유합니다.

+0

그래서 당황 스럽네요. (... 어떻게 보지 못했죠? –

+0

@JaredDrake는 모든 사람들에게 일어납니다 :) 행운을 빈다. –

3

변수가 정적이기 때문에 그 것처럼 보입니다. 이것은 ArrowControl의 모든 인스턴스에서 같은 것을 사용한다는 것을 의미합니다.

인스턴스 변수로 만드십시오. ("정적"을 제거하십시오)

+0

감사합니다. 나는 그것을 보지 못했다고 나는 믿을 수 없다. –

관련 문제