一.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();
}
}