淺談Java的6種創(chuàng)建對(duì)象方式
相信很多剛學(xué)習(xí)Java的同學(xué),都會(huì)很快說出“面向?qū)ο蟆边@種編程思想,都會(huì)說Java就是new個(gè)對(duì)象就行了,其他的都可以不用管,萬物皆對(duì)象,有了對(duì)象什么都有了。
但是您真的會(huì)創(chuàng)建Java對(duì)象嗎?或者說您只是簡(jiǎn)單的知道new一個(gè)對(duì)象嗎?哈哈,如果您還不知道Java創(chuàng)建對(duì)象的其他方式,也沒關(guān)系,今天小北就教會(huì)您,Java中創(chuàng)建對(duì)象的“六”種方式,從低端到高端,各種創(chuàng)建方式,總有一個(gè)適合您,還沒有對(duì)象的小伙伴注意啦,快點(diǎn)跟著小北一起,自己創(chuàng)建一個(gè)對(duì)象吧!
2022年,我們的目標(biāo)是:我要對(duì)象,我要脫單,再見單身GO!
創(chuàng)建對(duì)象的 6 種方式,假設(shè)有個(gè)GirlFriend類。
代碼

方法1.new一個(gè)對(duì)象
沒對(duì)象就new一個(gè)吧,沒錯(cuò),使用new關(guān)鍵字,這是Java創(chuàng)建對(duì)象最簡(jiǎn)單粗暴的方式了。
代碼

結(jié)果

方法2.克隆一個(gè)對(duì)象
您身邊的小伙伴兒都有對(duì)象了,但是您沒有,那怎么能行,抓緊把別人的對(duì)象克隆一個(gè)吧!哈哈~~~
讓GirlFriend類先實(shí)現(xiàn) Cloneable 接口,并且重寫其 clone() 方法。
代碼

注意:這里演示默認(rèn)使用的是淺拷貝,即只克隆基本類型的字段,引用類型的需要再重寫 clone() 方法手動(dòng)賦下引用字段的值
現(xiàn)在克隆一個(gè)對(duì)象:
代碼

結(jié)果

使用克隆的好處就是可以快速創(chuàng)建一個(gè)和原對(duì)象值一樣的對(duì)象,對(duì)象的字段值一樣,但是兩個(gè)不同的“引用”。
方法3.類派發(fā)一個(gè)對(duì)象(反射)
GirlFriend類如下:

直接使用GirlFriend類派發(fā)一個(gè)吧。
代碼

結(jié)果

方法4.動(dòng)態(tài)加載一個(gè)對(duì)象(反射)
知道GirlFriend類在哪里(全類名:包名+類名),但卻沒有被加載,那就反射一個(gè)對(duì)象吧:
代碼

結(jié)果

方法5.構(gòu)造一個(gè)對(duì)象(反射)
知道GirlFriend類的構(gòu)造方法,那就可以利用反射,調(diào)用構(gòu)造器構(gòu)造一個(gè)對(duì)象。
代碼

結(jié)果

這里也可以同時(shí)結(jié)合方法四的全類名構(gòu)造一個(gè)對(duì)象。
方法6.反序列化一個(gè)對(duì)象
這個(gè)和克隆的作用類似,假如以前序列化(保存)了一個(gè)對(duì)象在磁盤上,現(xiàn)在就可以反序列化出來。
首先讓GirlFriend類可序列化,實(shí)現(xiàn) Serializable 接口:

序列化/反序列化對(duì)象示例代碼

結(jié)果

不積跬步,無以至千里;不積小流,無以成江海。知識(shí)的海洋是無盡的,我們需要勤奮和積累。以上六種方式,希望可以對(duì)大家有所幫助,大家也可以評(píng)論留言,關(guān)注公眾號(hào),我們可以聚集各路大咖一起探討進(jìn)步。