创建对象的四种方式
創(chuàng)建的對(duì)象的四種方式
使用new創(chuàng)建對(duì)象
使用new關(guān)鍵字創(chuàng)建對(duì)象應(yīng)該是最常見(jiàn)的一種方式,但我們應(yīng)該知道,使用new創(chuàng)建對(duì)象會(huì)增加耦合度。無(wú)論使用什么框架,都要減少new的使用以降低耦合度。
使用反射的機(jī)制創(chuàng)建對(duì)象
使用Class類的newInstance方法
使用Constructor類的newInstance方法
采用clone
clone時(shí),需要已經(jīng)有一個(gè)分配了內(nèi)存的源對(duì)象,創(chuàng)建新對(duì)象時(shí),首先應(yīng)該分配一個(gè)和源對(duì)象一樣大的內(nèi)存空間。
要調(diào)用clone方法需要實(shí)現(xiàn)Cloneable接口,由于clone方法是protected的,所以修改Hello類。
采用序列化機(jī)制
實(shí)現(xiàn) Serializable 接口,通過(guò)對(duì)象的序列化和反序列化實(shí)現(xiàn)克隆,可以實(shí)現(xiàn)真正的深度克隆
注意:基于序列化和反序列化實(shí)現(xiàn)的克隆不僅僅是深度克隆,更重要的是通過(guò)泛型限定,可以檢查出要克隆的對(duì)
象是否支持序列化,這項(xiàng)檢查是編譯器完成的,不是在運(yùn)行時(shí)拋出異常,這種是方案明顯優(yōu)于使用 Object 類的 clone
方法克隆對(duì)象。讓問(wèn)題在編譯的時(shí)候暴露出來(lái)總是好過(guò)把問(wèn)題留到運(yùn)行時(shí)。
總結(jié)
- 上一篇: 获取Class对象的三种方式
- 下一篇: IO流以及他们的种类区别 序列化反序列化