java 에서 교차참조 해결하기...
글쓴이: exsider / 작성시간: 수, 2004/12/22 - 9:15오후
class A { B b; void func1() { // 코드 생략 b.func3(); } void func2() { // 코드 생략 } } class B { A a; void func3() { // 코드 생략 } void func4() { // 코드 생략 a.func2(); } }
위와 같이 클래스 두 개가 있는데 서로 참조를 합니다.
이 경우 A 나 B 클래스가 있는 파일을 컴파일하려고 하면 상대방의
정의를 찾을 수 없다며 에러가 납니다.
저는 두 클래스를 같은 파일에 정의하는 방법으로 해결했는데요,
뭔가 더 좋은 방법이 없을까요?
Forums:
가장 좋은 방법은 당연히 교차를 만들지 않는 것입니다.이럴때 쓰는 패
가장 좋은 방법은 당연히 교차를 만들지 않는 것입니다.
이럴때 쓰는 패턴중의 하나가 Mediator 인데, Mediator는 중간에
중재자를 넣어서 그 중재자가 양쪽의 참조를 갖도록 합니다.
JAVA의 경우에는,
일단 A가 B를 필요로 하니까 껍데기 뿐인 B를 만듭니다.
그 뒤 B를 컴파일 합니다.
그리고 A를 컴파일 합니다. 이때 B가 있으니까 잘 될 것입니다.
그리고 B에 내용을 채워넣고 B를 컴파일합니다. 이때 A가 있으니까 역시 컴파일에 성공할 것입니다.
해결책은 이렇지만 바른 해결방법은 아닙니다.
상호 참조를 없애세요..
--
Passion is like genius; a miracle.
여담인데 상호참조를 VS.NET에서 C#으로 만들어서 컴파일하면한번에
여담인데 상호참조를 VS.NET에서 C#으로 만들어서 컴파일하면
한번에 잘됩니다. 자바랑은 상호참조 해결방식이 약간 다른가봐요.
--
Passion is like genius; a miracle.
댓글 달기