java例項化一個物件的方式
阿新 • • 發佈:2018-11-21
一.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();
}
}