2013-02-14 2 views
-2

개체에 액세스하는 데 어려움을 겪고 있으며 다른 클래스의 메서드입니다. 내 문제를 설명하기 위해 몇 가지 코드를 작성했습니다.자바 : 클래스 B에서 클래스 A에서 생성 된 액세스 개체

참고 : 다음 코드는 컴파일 또는 실행 가능하지 않으며 단지 내 문제점을 설명하기위한 것입니다.

class MainClass { 
    public static void(String[] args) { 
     Run r = new Run(); 
    } 
} 

class Run { 

    Run() { 
     Brand cola = new Brand("Coca Cola"); 
     Brand pepsi = new Brand("Pepsi"); 

     // Creates the container object "con1" and adds brands to container. 
     Container con1 = new Container(); 
     con1.addToList(cola); 
     con1.addToList(pepsi); 
    } 

} 

class Brand { 
// In this class I have a method which needs to accsess the con1 object 
containing all the brands and I need to access the method 

    public void brandMethod() { 
     if(con1.methodExample) {  **// Error here. Can't find "con1".** 
      System.out.println("Method example returned true."); 
     } 
    } 

} 

class Container { 
    // This class is a container-list containing all brands brands 

    public boolean methodExample(){ 
    } 
} 

나는 브랜드 클래스에서 "con1"개체에 액세스하는 데 어려움을 겪고 있습니다. "con1"에 대한 액세스 권한을 얻으려면 어떻게해야합니까?

+2

나는 당신의 정확한 질문 제목을 봤는데 이것을 발견했습니다 - http://stackoverflow.com/questions/10570393/access-object-created-in-one-class-into-another 당신은 적어도 이것을 할 것으로 예상됩니다. SO에 게시하기 전에 많은 연구. – djechlin

+0

문제는 개체에 액세스하는 방법이 아니라 액세스하는 방법입니다. –

+0

참고 [한 클래스에서 다른 클래스로 작성된 액세스 객체] (http://stackoverflow.com/questions/10570393/access-object-created-in-one-class-into-another/14885596#14885596) –

답변

1

예 : 전화 번호 Brand으로 전화 할 것입니다.

brand.addTo(collection); 

public class Brand { 
    private Container container; 
    public void addTo(Container c) { 
     c.addToList(this); 
     container = c; 
    } 
} 

브랜드는 자신을 추가하고 컬렉션에 대한 참조를 보유 할 수 있습니다. 브랜드가 단일 컬렉션에 대한 참조를 가지고 있다는 것을 의미하며, 실제로 그 컬렉션이 원하는 것인지 확신 할 수 없습니다.

Brand을 만들 때 용기를 제공하는 것이 조금 더 나은 해결책이며, Brand은 컬렉션에 한 번만 추가되며 처음부터 컬렉션에 대한 참조가 있습니다.

+0

고맙습니다 귀하의 회신. 좋은 생각이야. 새 브랜드 만들기 및 Run 클래스에서 컬렉션을 함께 보냅니다. 그런 다음 컬렉션으로 브랜드를 호출하십시오. 나는 이것을 어떻게 써야할지 모른다. 도울 수 있니? – user1991083

+0

추가 정보는 위를 참조하십시오. –

0

Container 개체에 대한 참조를 사용하여 초기화해야합니다. COMMENT에 대답하기 위해

Container con1 = new Container(); <-- the inicialization by creating a new object. 

      ^
       | 
       | 
     the reference/variable 

UPDATE : 오류 라인 전에 당신은 인스턴스를 전달해야 할 것이다; 가장 일반적으로 메소드의 매개 변수로 사용됩니다. 나는 당신이 자바 기초를 너무 조금 연구했다는 것을 두려워한다. 문제는 많은 것들이 잘못되었다.

다음과 같은 개념을 검색

  • 변수와 그 범위를.
  • 로컬 변수 대 인스턴스 변수와 정적 변수.
  • 메소드 매개 변수.
+0

하지만 Container con1 = new Container()를 추가하면 원래 con1 컨테이너에 저장된 데이터가 손실됩니다. 저장된 브랜드와 함께 con1에 액세스해야합니다. – user1991083

관련 문제