回答
這很好。
對象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代碼是Java虛擬機;例如當您使用
java
命令。
(你學習和使用正確的Java術語,如果你要與其他IT專業人士進行交流是非常重要的。它避免了很多誤解和混亂!)
實際上,你可以從A的構造函數中泄漏'this':'new B(this)'。在實踐中,這發生了很多(糟糕的)GUI代碼。 –
@MarkoTopolnik - 這是真的(如果我正確理解你的意思)......但我試圖保持簡單。 –
這也是一個弊端,所以你要保持乾淨的同時:) –
是的,它是可以接受的,在就像編譯器將方法名稱加上簽名:參數類型的調用另存爲文本一樣。
我甚至看到以下恐怖
interface A {
final A = new B();
}
class B implements A {
}
Java是鬆散結合;有相應的運行時異常拋出。 同樣是針對庫jar的另一個版本進行編譯,並使用具有損壞API的jar運行。
- 1. Java的循環引用
- 2. Json和Java - 循環引用
- 3. JAVA - 處理循環引用的JSON庫
- 4. python中的循環引用
- 5. json中的循環引用
- 6. IOS中的循環引用
- 7. 循環中的循環環Java
- 8. 循環引用
- 9. 循環引用
- 10. 循環引用
- 11. 循環引用
- 12. Java循環引用,壞風格?
- 13. Java for循環按值或引用
- 14. 的foreach循環foreach循環中(Java)的
- 15. 循環引用在Symfony2中
- 16. emitmapper循環引用
- 17. DB循環引用
- 18. 循環引用marionette.js
- 19. Symfony2.1循環引用
- 20. 循環中的引用重用
- 21. 可能的循環引用?
- 22. linux上的循環引用
- 23. ICollection的循環引用
- 24. 循環引用的IValueConverter
- 25. 在while循環中嵌套循環 - Java
- 26. 引用嵌套循環中的外循環變量
- 27. 更改循環內的循環索引
- 28. 在Excel VBA中的循環引用
- 29. Javascript中循環引用的示例?
- 30. 數據庫表中的循環引用
你確定你的意思是這些類有引用嗎?你的意思是說,類「A」的一個對象引用了一個「B」類的對象嗎? – chrylis
你有試過嗎?這可能不會比在這裏提出問題少。 –
而不是描述代碼,寫它,測試它,併發布它,如果你不明白它是如何工作的。 –