2012-03-31 4 views
0

클래스에 정적이 아닌 것을 정의하는 배열에 액세스하는 데 문제가 있습니다.다른 클래스의 비 정적 변수에 액세스

이 배열의 요소는 완전히 다른 클래스 ("add"라고 함)로 추가되었으므로이 클래스에도 연결할 수 없습니다. 내 클래스에서 나는 "추가"에서 채워진 "A"클래스 (배열을 가짐)에서 배열을 가져와야합니다. 왜냐하면 정적이 아니기 때문에,이 "A"클래스의 새로운 속성을 만들 때 새로운 객체가 만들어 지므로 채우기를 잊어 버리십시오.

내 질문; 그것의 요소를 잃지 않고이 비 정적 배열을 얻을 수있는 방법이 무엇입니까?

+0

가능한 복제본 [비 정적 변수는 정적 컨텍스트 (Java)에서 참조 할 수 없습니다] (http://stackoverflow.com/questions/2559527/non-static-variable-cannot-be-referenced-from-a) -static-context-java) – EJP

답변

0

이 정적 속성이 아니기 때문에이 "A"클래스의 새 특성을 만들 때 새 개체가 만들어 지므로 채우기를 잊어 버리십시오.

음 예 - 값이 추가 된 인스턴스가 필요합니다. 우리는 코드에 대해 충분히 알지 못하기 때문에이를 수행하는 방법을 말할 수 없습니다 (결국, 당신은 그 코드를 보여주지 못했습니다). 그것이 배열이라는 사실은 무의미합니다. 인스턴스 변수의 전체적인 점은 각 인스턴스가 그 객체의 상태를 나타 내기 위해 자체의 변수 세트를 가지고 있다는 것입니다. 특정 객체의 상태가 필요한 경우 해당 객체에 대한 참조가 필요합니다.

제쳐두고 일반적으로 다른 클래스의 변수에 직접 액세스하면 안됩니다. 변수는 적절한 경우 데이터에 액세스하기위한 속성과 함께 비공개이어야합니다. (이 아니라면 변수 하나당 하나의 속성을 의미합니다. 값을 직접 노출하지 않으려는 경우가 아니라 객체 전체에 작용하는 메소드를 노출하는 경우가 있습니다. 귀하의 개체가 무엇을 나타내는 지 알 것입니다.)

1

설명에서 알기 힘들지만, 원하는 배열이 포함 된 클래스에 'getter'메서드를 추가하기 만하면됩니다. 배열에 액세스하려는 클래스의 배열을 포함하는 객체입니다.

public 'ArrayType' getArray() { 
    return array; 
} 

어레이의 이름으로 어레이의 형태와 '배열'과 'ArrayType'를 교체.

이렇게하면 어레이에 대한 참조를 얻을 수 있으므로 배열 내부의 내용에 대한 작업을 수행 할 수 있습니다.

아직 알지 못했다면 다른 클래스의 객체 인스턴스 변수에 액세스해야 할 때 상당히 일반적인 방법입니다.

+0

나의 초기 생각은 getter에 대한 것이었지만 배열을 정적으로 만드는 경우 일 수도 있다는 느낌이 들었다. 그것은 내게 소리처럼 일종의 user1304752 같은 클래스의 두 인스턴스에서 인스턴스 변수에 액세스하려고하고 정적 변수에 대한 완벽한 상황처럼 들리는 동일한 개체가 반환 될 것으로 기대하고 있습니다. – charlemagne

+0

@zandomatter : 아니오, 두 클래스가 동일한 인스턴스를 인식하고있는 완벽한 상황 인 것 같습니다. 이것이 진정한 세계적 국가임을 의미하는 것은 아닙니다. (나는 접근이 문제가되지 않는다는 것에 동의한다.) –

관련 문제