相互引用的初始化过程
生活随笔
收集整理的這篇文章主要介紹了
相互引用的初始化过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題說明:
? ? ? ?兩個對象A初始化時候會引用B,B 在初始化時會引用A,這個過程是怎么完成的?
代碼示例:
/*** 相互關聯引用的初始化* @author administrator**/ public class Interdependent {private TestClass test = new TestClass( this );private String info;public Interdependent() {super();info = "測試相互引用的初始化過程。";test.setMessage( "TestClass完成初始化了,調用方法!" );System.out.println( "Interdependent()" );}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}public TestClass getTest() {return test;}public void setTest(TestClass test) {this.test = test;}/*** @param args*/public static void main(String[] args) {Interdependent inter = new Interdependent();System.out.println( inter.getInfo() );System.out.println( inter.test.getMessage() );}}class TestClass{private Interdependent dependent;private String message;public TestClass(Interdependent dependent) {super();this.dependent = dependent;System.out.println( "TestClass(), Interdependent.test=" + dependent.getTest() );}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}代碼分析:
第一步,執行 Interdependent 的構造函數,遇到 super() 方法。 super() 方法的作用很大,給對象分配堆空間(this 引用賦值)并將對象的字段初始化為默認值。
第二步,執行對象字段初始化(即 test = new TestClass( this ) ),此時傳遞的 this 引用的 test 還為 null。執行完成后 test 引用指向完成的對象。
第三步,執行 Interdependent 構造函數剩下的。
代碼執行:
TestClass(), Interdependent.test=null
Interdependent()
測試相互引用的初始化過程。
TestClass完成初始化了,調用方法!
總結
以上是生活随笔為你收集整理的相互引用的初始化过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux添加nginx,linux下安
- 下一篇: LiteIDE 编写Go的单元测试