1. 程式人生 > >java例項化一個物件的方式

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