java實例化一個對象的方式


一.new(經過構造函數)
二.反射(經過構造函數)
三.反序列化(不經過構造函數)
四.克隆(不經過構造函數)
 
package com.wen1024;
public class NewInstance {
    public static void main(String[] args) throws Exception {
        //1、使用new的方式------通過有參構造函數
        Customer customer1 = new Customer("張三", 18);
        System.out.println("customer1:" + customer1);
        //2、使用反射------通過無參構造函數
        Customer customer2 = (Customer) Class.forName("com.itheima.Customer").newInstance();
        System.out.println("customer2:" + customer2);
        //3、使用克隆(需要實現Cloneable接口,重寫Object類中的clone方法)------不通過構造函數
        Customer customer3 = (Customer) customer1.clone();
        System.out.println("customer3:" + customer3);
    }
}
 
 
 
package com.wen1024;
import java.io.*;
import java.util.Date;
public class Deserialize {
    public static void main(String[] args) throws Exception {
        // 4、通過反序列化創建對象
        //其中的  C:\Users\Administrator\Desktop\serializable.txt 表示存放序列化對象的文件
        //序列化對象
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\serializable.obj"));
        Customer customer = new Customer("張三", 18);
        System.out.println(customer);
        //寫入customer對象
        out.writeObject(customer);
        out.flush();
        out.close();
        //反序列化對象
        ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:\\Users\\Administrator\\Desktop\\serializable.obj"));
        //讀取customer對象
        Customer obj = (Customer) in.readObject();
        System.out.println(obj);
        System.out.println(customer == obj);
        in.close();
    }
}
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM