真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java創(chuàng)建對象的方法有哪些

本篇內(nèi)容介紹了“Java創(chuàng)建對象的方法有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

我們提供的服務有:網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、鋼城ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的鋼城網(wǎng)站制作公司

1 簡介

Java是面向?qū)ο蟮木幊陶Z言,只要使用它,就需要創(chuàng)建對象。Java創(chuàng)建對象有六種方法,實際常用的不會這么多,這里權(quán)當是記錄一下。

2 六種方法

(1)使用new關(guān)鍵字

Pumpkin p1 = new Pumpkin();

(2)反射之Class類newInstance()

Pumpkin p2 = Pumpkin.class.newInstance();

(3)反射之Constructor類的newInstance()

Pumpkin p3 = Pumpkin.class.getDeclaredConstructor().newInstance();

(4)Object對象的clone方法

Pumpkin p4 = (Pumpkin) p1.clone();

注意Object類的clone方法是protected的,在Override的時候,可以改成public,這樣讓其它所有類都可以調(diào)用。

注意淺拷貝和深拷貝。

在這里小編建了一個前端學習交流扣扣群:132667127,我自己整理的最新的前端資料和高級開發(fā)教程,如果有想需要的,可以加群一起學習交流

(5)反序列化

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.bin"));
oos.writeObject(p1);
oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.bin"));
Pumpkin p5 = (Pumpkin) ois.readObject();
ois.close();

必須要實現(xiàn)Serializable接口;

需要注意哪些字段可序列化,哪些字段不會被序列化,如何控制;

注意serialVersionUID的作用;

了解Externalizable的不同之處。

(6)使用Unsafe類

Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);
Pumpkin p6 = (Pumpkin) unsafe.allocateInstance(Pumpkin.class);

很少用的方法,一般不用了解這個方法。

3 示例代碼

示例代碼如下:

package com.pkslow.basic;
import sun.misc.Unsafe;

import java.io.*;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

public class CreateObject {

   public static class Pumpkin implements Cloneable, Serializable {
       public Pumpkin(){
           System.out.println("Constructor called");
       }
       @Override
       public Object clone() throws CloneNotSupportedException {
           return super.clone();
       }
   }

   public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, CloneNotSupportedException, IOException, ClassNotFoundException, NoSuchFieldException {

       System.out.println("---start---");
       System.out.println("(1) new");
       Pumpkin p1 = new Pumpkin();

       System.out.println("(2) Class newInstance");
       Pumpkin p2 = Pumpkin.class.newInstance();

       System.out.println("(3) Constructor newInstance");
       Pumpkin p3 = Pumpkin.class.getDeclaredConstructor().newInstance();

       System.out.println("(4) clone");
       Pumpkin p4 = (Pumpkin) p1.clone();

       System.out.println("(5)Serialization");
       ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.bin"));
       oos.writeObject(p1);
       oos.close();

       ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.bin"));
       Pumpkin p5 = (Pumpkin) ois.readObject();
       ois.close();

       System.out.println("(6) Unsafe");
       Field f = Unsafe.class.getDeclaredField("theUnsafe");
       f.setAccessible(true);
       Unsafe unsafe = (Unsafe) f.get(null);
       Pumpkin p6 = (Pumpkin) unsafe.allocateInstance(Pumpkin.class);

       System.out.println("---end---");
   }
}

輸出結(jié)果如下:

---start---
(1) new
Constructor called
(2) Class newInstance
Constructor called
(3) Constructor newInstance
Constructor called
(4) clone
(5)Serialization
(6) Unsafe
---end---

所以會執(zhí)行構(gòu)造函數(shù)的有:new關(guān)鍵字、兩種反射;

不會執(zhí)行構(gòu)造函數(shù)的有:clone、序列化、Unsafe類。

“Java創(chuàng)建對象的方法有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


當前題目:Java創(chuàng)建對象的方法有哪些
網(wǎng)頁鏈接:http://weahome.cn/article/pphphs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部