原文鏈接:https://blog.csdn.net/qq_39817135/article/details/101313225
1.通過new關鍵字獲取對象。
new操作符的本意是分配內存。程序執行到new操作符時, 首先去看new操作符后面的類型,因為知道了類型,才能知道要分配多大的內存空間。分配完內存之后,再調用構造函數,填充對象的各個域,這一步叫做對象的初始化,構造方法返回后,一個對象創建完畢,可以把他的引用(地址)發布到外部,在外部就可以使用這個引用操縱這個對象。
2.通過克隆獲取對象。
類要想通過克隆獲取對象必須實現Cloneable接口,如果類屬性中有引用對象必須重寫clone()方法,實現深克隆,即類中的引用對象也在堆內存中復制一份。
3.通過反射獲取對象。
反射一般通過Class.forName(String className)獲取類對象,然后獲取到構造器,通過構造器的newInstance() 方法獲取對象實例。
4.通過反序列化獲取對象。
反序列化就是把字符序列轉化為Java對象。過程一般是通過ObjectOutputStream的readObject() 方法從輸入流中讀取字節流並把對象輸出。