亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中創(chuàng)建對象的6種方式

 更新時間:2022年02月16日 15:11:46   作者:小鬼妹妹編程史  
大家好,本篇文章主要講的是Java中創(chuàng)建對象的6種方式,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下的相關資料

背景

本文教你創(chuàng)建對象的 6 種方式,從低端到高端,各種創(chuàng)建方式,總有一個適合你,沒有對象的自己生成一個吧!

創(chuàng)建對象的 6 種方式

假設有個女朋友類:

@Data
@NoArgsConstructor
@AllArgsConstructor
class GirlFriend {
 
 private String name;
 
}

注解使用的是 Lombok 框架注解,方便快速開發(fā)

方法1:new 一個對象

沒對象就 new 一個吧,沒錯,使用 new 關鍵字,這也是 Java 創(chuàng)建對象最簡單直接的方式了。

示例代碼:

@Test
public void girlFriend1() {
    GirlFriend girlFriend = new GirlFriend("new一個對象");
    System.out.println(girlFriend);
}

輸出結果:

GirlFriend(name=new一個對象)

方法2:克隆一個對象

朋友有女朋友,你沒有,如果可以,把別人的女朋友克隆一個吧?

讓女朋友類先實現(xiàn) Cloneable 接口,并且實現(xiàn)其 clone() 方法:

@Data
@NoArgsConstructor
@AllArgsConstructor
class GirlFriend implements Cloneable {
 
 private String name;
 
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
    
}

注意:這里演示默認使用的是淺拷貝,即只克隆基本類型的字段,引用類型的需要再重寫 clone() 方法手動賦下引用字段的值。

現(xiàn)在克隆一個對象,示例代碼:

@Test
public void girlFriend2() throws CloneNotSupportedException {
    GirlFriend girlFriend1 = new GirlFriend("克隆一個對象");
    GirlFriend girlFriend2 = (GirlFriend) girlFriend1.clone();
    System.out.println(girlFriend2);
}

輸出結果:

GirlFriend(name=克隆一個對象)

使用克隆的好處就是可以快速創(chuàng)建一個和原對象值一樣的對象,對象的字段值一樣,但是兩個不同的引用。

方法3:類派發(fā)一個對象(反射)

直接使用女朋友類派發(fā)一個吧:

@Test
public void girlFriend3() throws InstantiationException, IllegalAccessException {
    GirlFriend girlFriend = GirlFriend.class.newInstance();
    girlFriend.setName("類派發(fā)一個對象");
    System.out.println(girlFriend);
}

輸出結果:

GirlFriend(name=類派發(fā)一個對象)

方法4:動態(tài)加載一個對象(反射)

知道女朋友類在哪里(類全路徑),但卻沒有被加載,那就反射一個對象吧:

@Test
public void girlFriend4() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    GirlFriend girlFriend = (GirlFriend) Class.forName("cn.javastack.test.jdk.core.GirlFriend").newInstance();
    girlFriend.setName("反射一個對象");
    System.out.println(girlFriend);
}

輸出結果:

GirlFriend(name=反射一個對象)

方法5:構造一個對象(反射)

知道女朋友類的構造,就可以調用構造器構造一個對象:

@Test
public void girlFriend5() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
    GirlFriend girlFriend = GirlFriend.class.getConstructor().newInstance();
    girlFriend.setName("構造一個對象");
    System.out.println(girlFriend);
}

輸出結果:

GirlFriend(name=構造一個對象)

這里也可以同時結合類全路徑構造一個對象。

方法6:反序列化一個對象

這個和克隆的作用類似,假如以前序列化(保存)了一個女朋友在磁盤上,現(xiàn)在就可以反序列化出來。

首先讓女朋友可序列化,實現(xiàn) Serializable 接口:

@Data
@NoArgsConstructor
@AllArgsConstructor
class GirlFriend implements Cloneable, Serializable {
 
    private static final long serialVersionUID = 1L;
    
    private String name;
 
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
 
}

序列化/反序列化對象示例代碼:

@Test
public void girlFriend6() throws IOException, ClassNotFoundException {
    GirlFriend girlFriend1 = new GirlFriend("反序列化一個對象");
 
    // 序列化一個女朋友
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("gf.obj"));
    objectOutputStream.writeObject(girlFriend1);
    objectOutputStream.close();
 
    // 反序列化出來
    ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("gf.obj"));
    GirlFriend girlFriend2 = (GirlFriend) objectInputStream.readObject();
    objectInputStream.close();
 
    System.out.println(girlFriend2);
}

輸出結果:

GirlFriend(name=反序列化一個對象)

總結

到此這篇關于Java中創(chuàng)建對象的6種方式的文章就介紹到這了,更多相關Java創(chuàng)建對象內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 編寫Java代碼制造一個內存溢出的情況

    編寫Java代碼制造一個內存溢出的情況

    這篇文章主要介紹了編寫Java代碼制造一個內存溢出的情況,或許這種有意制造能夠更好地幫助理解Java中的內存溢出情況XD 需要的朋友可以參考下
    2015-07-07
  • Java并發(fā)編程 interrupt()方法示例詳解

    Java并發(fā)編程 interrupt()方法示例詳解

    interrrupt()方法可以用來打斷正在運行的線程,也可以打斷sleep()、wait()、join()情況下的線程,但是這些情況下被打斷線程的打斷標記不同,這篇文章主要介紹了Java并發(fā)編程 interrupt()方法示例詳解,需要的朋友可以參考下
    2023-06-06
  • java調用c程序通信示例代碼

    java調用c程序通信示例代碼

    這篇文章主要介紹了java調用c程序通信示例,大家參考使用吧
    2013-12-12
  • Spring Boot Jar 文件能直接運行的操作方法

    Spring Boot Jar 文件能直接運行的操作方法

    本文將深入探討 Spring Boot 的打包過程及其運行原理,揭示其 JAR 文件如何巧妙地集成依賴項、嵌入 Web 容器并實現(xiàn)自動配置,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Java?Spring框架創(chuàng)建項目與Bean的存儲與讀取詳解

    Java?Spring框架創(chuàng)建項目與Bean的存儲與讀取詳解

    本篇文章將介紹Spring項目的創(chuàng)建,IDEA國內源的配置以及Bean的存儲與讀取,所謂的Bean其實就是對象的意思,更詳細地說Spring Bean是被實例的,組裝的及被Spring 容器管理的Java對象
    2022-07-07
  • mybatis-plus主鍵id生成、字段自動填充的實現(xiàn)代碼

    mybatis-plus主鍵id生成、字段自動填充的實現(xiàn)代碼

    這篇文章主要介紹了mybatis-plus主鍵id生成、字段自動填充的實現(xiàn)代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot中使用spring-retry 解決失敗重試調用

    SpringBoot中使用spring-retry 解決失敗重試調用

    本文主要介紹了SpringBoot中使用spring-retry 解決失敗重試調用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 一次mybatis連接查詢遇到的坑實戰(zhàn)記錄

    一次mybatis連接查詢遇到的坑實戰(zhàn)記錄

    這篇文章主要給大家介紹了關于一次mybatis連接查詢遇到的坑的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Nacos作為配置中心注冊監(jiān)聽器方法

    Nacos作為配置中心注冊監(jiān)聽器方法

    本文主要討論Nacos作為配置中心時,其中配置內容發(fā)生更改時,我們的應用程序能夠做的事。一般使用監(jiān)聽器來實現(xiàn)這步操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • Spring?Security權限管理實現(xiàn)接口動態(tài)權限控制

    Spring?Security權限管理實現(xiàn)接口動態(tài)權限控制

    這篇文章主要為大家介紹了Spring?Security權限管理實現(xiàn)接口動態(tài)權限控制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論