java編程學(xué)習(xí):對(duì)象的五種創(chuàng)建方式!

Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。

給你學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫(kù)-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

示例對(duì)象

public class People { private String name; private String address; public People() { } public People(String name, String address) { this.name = name; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 七六零,二五零,五四一 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

構(gòu)造器創(chuàng)建對(duì)象

People people = new People("lili", "china");

利用class的反射機(jī)制

Class peopleClass = People.class; //獲得People的Class實(shí)例對(duì)象People people = (People)peopleClass.newInstance(); //Class clazz = Class.forName("People");People people = (People)clazz.newInstance();

這種方式適用于有無(wú)參構(gòu)造器的類

利用序列化的方式構(gòu)造實(shí)例對(duì)象

public class CreateFour implements Serializable { public static void main(String args[]) { CreateFour fCreateFour = new CreateFour(); ObjectOutputStream objectStream; try { objectStream = new ObjectOutputStream(new FileOutputStream("res/obj.txt")); objectStream.writeObject(fCreateFour); ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("res/obj.txt")); CreateFour cloneFour = (CreateFour) objectInputStream.readObject(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

這種方式前提是該類必須要實(shí)現(xiàn)Serializable

利用Object的clone方法

public class CreateFour implements Cloneable {

public static void main(String args[]) {

CreateFour f = new CreateFour();

try {

CreateFour cloneObject = (CreateFour) f.clone();

} catch (CloneNotSupportedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

該類必須實(shí)現(xiàn)Cloneable接口,不然會(huì)拋出異常CloneNotSupportedException

使用Objenesis來(lái)實(shí)例化對(duì)象

Objenesis objenesis = new ObjenesisStd();ObjectInstantiator instantiator = objenesis.getInstantiatorOf(People.class);People people = (People) instantiator.newInstance();

使用場(chǎng)合

Java已經(jīng)支持使用Class.newInstance()動(dòng)態(tài)實(shí)例化類的實(shí)例。但是類必須擁有一個(gè)合適的構(gòu)造器。有很多場(chǎng)景下不能使用這種方式實(shí)例化類,比如:

- 構(gòu)造器需要參數(shù)

- 構(gòu)造器有side effects

- 構(gòu)造器會(huì)拋異常

因此,在類庫(kù)中經(jīng)常會(huì)有類必須擁有一個(gè)默認(rèn)構(gòu)造器的限制。Objenesis通過(guò)繞開對(duì)象實(shí)例構(gòu)造器來(lái)克服這個(gè)限制。

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 七六零,二五零,五四一 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

典型應(yīng)用

序列化,遠(yuǎn)程調(diào)用和持久化 -對(duì)象需要實(shí)例化并存儲(chǔ)為到一個(gè)特殊的狀態(tài),而沒(méi)有調(diào)用代碼。

代理,AOP庫(kù)和Mock對(duì)象 -類可以被子類繼承而子類不用擔(dān)心父類的構(gòu)造器

容器框架 -對(duì)象可以以非標(biāo)準(zhǔn)的方式被動(dòng)態(tài)實(shí)例化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,822評(píng)論 18 399
  • 我在等 在等一個(gè)人 盼你何時(shí)歸來(lái) 我在等 在等一束花開 他滿載這星輝 迎你歸來(lái) 我在等 在能一個(gè)明天 也許明天你就回來(lái)
    不同尋常的帥閱讀 180評(píng)論 0 0
  • 最近看到各媒體社交平臺(tái)都有很多精彩的文章,我也清楚這些文章都來(lái)自各個(gè)不同行業(yè)的人才所寫。這些文章都能把我吸引住不斷...
    原始之家閱讀 179評(píng)論 2 2
  • 當(dāng)安菲爾德陷入瘋狂,當(dāng)0―4刺痛槍迷的心,于是教授“又開始”下課了。 只不過(guò),這次“倒溫”派占了上風(fēng),這...
    龍城霸主閱讀 308評(píng)論 0 0

友情鏈接更多精彩內(nèi)容