2014-10-29 4 views
1

최근에 Java로 많이 놀아 왔어 & 필자는 내 목적에 따라 &과 통신 할 수있는 여러 객체가 필요하다는 것을 발견했다. GUI 클래스를 생성하는 특정 클래스를 모든 변수, 필드, 기타 클래스는 편집해야합니다. 내가 찾은 가장 단순하지만 잘못된 방법은 MainClass 파일의 GUI 클래스를 인스턴스화 한 다음 GUI 클래스의 메소드와 변수에 명시 적으로 액세스해야하는 다른 클래스를 인스턴스화 할 때 GUI를 전달하기 만하면됩니다 그들에게 반대하십시오.다른 클래스에 객체를 전달하면 새로운 별도의 객체가 생성됩니까?

내 문제는 이미 생성 된 개체에 대한 액세스를 열거 나 완전히 새로운 개체를 만드는 것인지 확인할 수 없다는 것입니다. 후자의 경우 몇 가지 새로운 GUI 객체를 열면 아무 것도 얻지 않고 모든 것을 복제 할 것이므로 피해야 할 것입니다.

아래와 같이 (무의식적으로 만든) 코드를 포함하므로 내 질문이 있습니다 : 새로운 중복 개체를 만들지, 아니면 다른 클래스가 새 클래스를 만들지 않고 해당 인스턴스에 액세스하도록 허용합니까?

메인 클래스 코드 :

public class PlateauMainClass { 

/** 
* @param args the command line arguments 
*/ 

PlateauJGui plateauGui; 
GenerateGUI plateauGuiDataGen; 

PlateauMainClass() { 
    // Instantiate the plateauGui object, then pass it into the GUI generator. 
    // The GUI generator will generate data for the different GUI elements. 
    plateauGui = new PlateauJGui(); 
    plateauGuiDataGen = new GenerateGUI(plateauGui); 

    // Finally, makes the frame actually visible. 
    plateauGuiDataGen.makeFrameVisible(); 
} 

public static void main(String[] args) { 
    // TODO code application logic here 
    new PlateauMainClass(); 
} 

} 

내선. 클래스 예제 코드 :

public class GenerateGUI { 

PlateauJGui gui; 

GenerateGUI(PlateauJGui o) { 

    gui = o; 

} 

public void makeFrameVisible() { 

    gui.setVisible(true); 

} 

} 
+0

참조하십시오. http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value –

+0

간단한 참조 평등 검사를 수행 했습니까? –

+0

재미있는 읽을 거리! 고맙습니다 =) – Tenaar

답변

3

새로운 객체가 모든 new 키워드에 일부 예외적 인 경우 (등등 Class.newInstance 방법 및 호출)에 생성됩니다. 따라서 모든 객체는 PlateauJGui 클래스의 동일한 인스턴스로 조작됩니다.

+0

오, 달콤한! 그래서 적어도 나는 그것을 올바르게 했어 & 그런 식으로 인스턴스를 만들 위험을 감수하지 않을 것이다. 설명 주셔서 감사합니다! – Tenaar

관련 문제