클래스 A에 클래스 B 참조가 있고 클래스 B에 클래스 A 참조가 있으면 Java에서 사용할 수 있습니까? 예인 경우, 클래스 A를 클래스 B로 실행하면 B가 인스턴스화되지 않습니다. 그렇다면 컴파일러가 클래스 B의 참조를 어떻게 실행합니까?자바의 순환 참조
TIA
클래스 A에 클래스 B 참조가 있고 클래스 B에 클래스 A 참조가 있으면 Java에서 사용할 수 있습니까? 예인 경우, 클래스 A를 클래스 B로 실행하면 B가 인스턴스화되지 않습니다. 그렇다면 컴파일러가 클래스 B의 참조를 어떻게 실행합니까?자바의 순환 참조
TIA
이것은 완벽합니다.
객체 A는 객체 B를 참조 할 수 있고, 객체 B는 그래프 참조 동안 많은 노드, 당신은 실제로 노드가 전체 그래프를 참조합니다 자주 코드의 그래프에서 볼 개체 A.을 참조 할 수 있습니다.
클래스 A에 클래스 B 참조가 있고 클래스 B에 클래스 A 참조가있는 경우 Java에서 사용할 수 있습니까?
예.
클래스 A를 시간 클래스로 실행하면 B가 인스턴스화되지 않습니다. 그렇다면 컴파일러가 클래스 B의 참조를 어떻게 실행합니까?
주기적으로 하나의 개체를 만든 다음 다른 개체를 만든 다음주기를 닫아야 순환 참조를 만들어야합니다. 예 : 이 같은.
A a = new A();
B b = new B(a);
a.setB(b);
는 (이 너무 사이클을 형성하는 다른 방법이 있습니다. A
클래스가 setB(A)
방법으로 정의되어 있다고 가정합니다, 그러나 이것은 간단합니다.)
그러나 참고하여 용어는 모두 완전히 잘못되었습니다.
javac
위해) 그냥 코드를 컴파일 ... 아무것도 "실행"하지 않습니다.java
명령을 사용할 때.(당신이 배우고 다른 IT 전문가와 통신하려는 경우 올바른 자바 용어를 사용하는 것이 중요합니다. 그것은 오해와 많은 혼란을 방지!)
A의 생성자에서'this B'를 실제로 누출시킬 수 있습니다 :'new B (this)'. 실제로 이것은 (잘못 작성된) GUI 코드에서 많이 발생합니다. –
@MarkoTopolnik - 그건 사실입니다 (내가 무슨 뜻인지 정확히 이해한다면 ...). 그러나 나는 그것을 간결하게하려고 노력하고 있습니다. –
그것은 또한 의료 과실이므로 같은 시간에 깨끗하게 유지할 수 있습니다 :) –
예는에 허용 컴파일러가 메소드 이름과 서명 : 매개 변수 유형으로 다른 클래스에 대한 호출을 텍스트로 다시 저장하는만큼.
심지어 공포 다음 본
interface A {
final A = new B();
}
class B implements A {
}
자바가 느슨하게 결합이다; 해당 런타임 예외가 발생했습니다. 같은 도서관 항아리의 다른 버전에 대해 컴파일 및 깨진 API와 항아리로 실행됩니다.
수업에 참조가 있다는 의미입니까? 클래스 A의 객체가 클래스 B의 객체에 대한 참조를 가지고 있다는 것을 의미합니까? – chrylis
시도해 보셨습니까? 아마도 여기에 질문하는 것보다 적게 걸릴 것입니다. –
코드를 설명하는 대신 작성하고 테스트하고 게시 방법을 이해하지 못하면 게시하십시오. –