java class 生成对象_面向对象编程,你知道Java有哪些创建对象的方式吗?
來源:CSDN____愛敲代碼的小游子
1、用new關鍵字創建對象,需要使用構造器。
new 一個對象經過了哪些過程?
2、使用反射機制創建對象,用Class類或Constructor類的newInstance()方法。當使用Class類里的newInstance()方法,調用的是無參構造方法。
當使用java.lang.reflect.Constructor類里的newInstance方法,調用的是有參構造方法。
1、Class類里的newInstance()調用的是無參構造方法
2、Constructor類的newInstance()方法調用的是有參構造方法
3、通過object類的clone方法需要實現Cloneable接口,重寫object類的clone方法。無論何時我們調用一個對象的clone方法,JVM就會創建一個新的對象,將前面對象的內容全部拷貝進去。用clone方法創建對象并不會調用任何構造函數。
4、使用反序列化通過ObjectInputStream的readObject()方法反序列化類當我們序列化和反序列化一個對象,JVM會給我們創建一個單獨的對象。為了反序列化一個對象,我們需要讓我們的類實現Serializable接口。在反序列化時,JVM創建對象并不會調用任何構造函數。通過反序列化生成對象的過程主要由以下幾個步驟:
1、創建一個對象輸入流,它可以包裝一個其他類型的源輸入流,如文件輸入流;
2、 通過對象輸入流的readObject()方法讀取對象。
序列化工具類
創建對象各方法的代碼
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, CloneNotSupportedException {
//1、使用關鍵字new創建對象(沒有參數調用無參構造、傳入參數調用帶參構造)
Girlfriend girlfriend01 = new Girlfriend();
Girlfriend girlfriend02 = new Girlfriend("y", 18);
//2、使用反射機制創建對象,使用Class的newInstance()調用默認的無參構造
Girlfriend girlfriend03 = Girlfriend.class.newInstance();
//反射機制2,調用帶參
Class> p1 = Class.forName("com.yky.Girlfriend");
Constructor> constructor = p1.getConstructor(String.class, Integer.class);
Girlfriend girlfriend04 = (Girlfriend) constructor.newInstance("k", 18);
System.out.println(girlfriend04);
//3、使用object類的clone方法
Girlfriend girlfriendClone = (Girlfriend) girlfriend04.clone();
System.out.println("girlfriendClone="+girlfriendClone);
//4、使用序列化反序列化生成對象
Girlfriend clone = ObjectUtils.clone(girlfriend04);
System.out.println("clone"+clone);
System.out.println("girlfriend04和反序列化生成的clone相等嗎");
System.out.println(clone == girlfriend04);
? ?}
總結
以上是生活随笔為你收集整理的java class 生成对象_面向对象编程,你知道Java有哪些创建对象的方式吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring MVC-表单(Form)标
- 下一篇: hadoop-09-安装资源上传