下面有四種不同的方式創建java對象:
(1) 使用關鍵字new
MyObject object = new MyObject();
(2)使用Class.forName()
MyObject object = (MyObject) Class.forName("subin.rnd.MyObject").newInstance();
(3)使用clone()
MyObject anotherObject = new MyObject();
MyObject object = anotherObject.clone();
(4)運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。
ObjectInputStream inStream = new ObjectInputStream(anInputStream );
MyObject object = (MyObject) inStream.readObject();
說明:Java 序列化與反序列化
對象序列化(Serializable)是指將對象轉換爲字節序列的過程,而反序列化則是根據字節序列恢復對象的過程。序列化一般用於以下場景:
1.永久性保存對象,保存對象的字節序列到本地文件中;
2.通過序列化對象在網絡中傳遞對象;
3.通過序列化在進程間傳遞對象。
對象所屬的類必須實現Serializable或是Externalizable接口才能被序列化。對實現了Serializable接口的類,其序列化與反序列化採用默認的序列化方式,Externalizable接口是繼承了Serializable接口的接口,是對Serializable的擴展,實現了Externalizable接口的類完全自己控制序列化與反序列化行爲。
Java.io.ObjectOutputStream代表對象輸出流,其方法writeObject(Object obj)可以實現對象的序列化,將得到的字節序列寫到目標輸出流中。Java.io.ObjectInputStream代表對象輸入流,其readObject()方法能從源輸入流中讀取字節序列,將其反序列化爲對象,並將其返回。
參考資料:
http://blog.csdn.net/wuwenxiang91322/article/details/11108039