java建立對象的幾種方式

前言,今日面試被問到建立對象是否必定要經過構造器,當時回答錯誤,查詢分析後記錄。java

建立對象的幾種方式:面試

第一種,也是最經常使用、一直接觸到的方法:經過new 建立對象。這種方法須要用到構造器jvm

    Demo demo1=new Demo();
    Demo demo2=new Demo(1,"有參構造器");
函數

 

 

第二種,比較經常使用的的方法:經過反射 newInstance()建立對象。這種方法用到構造器code

  Demo demo2=(Demo) Class.forName("Demo").newInstance();對象

第三種,經過object類的clone方法。須要實現Cloneable接口,重寫object類的clone方法。不管什麼時候咱們調用一個對象的clone方法,jvm就會建立一個新的對象,將前面對象的內容所有拷貝進去。用clone方法建立對象並不會調用任何構造函數。(原型模式,還沒了解)blog

  Demo demo4=(Demo) demo2.clone();接口

第四種,反序列化。java 中經常進行 JSON 數據跟 Java 對象之間的轉換,即序列化和反序列化。
當咱們序列化和反序列化一個對象,JVM會給咱們建立一個單獨的對象,在反序列化時,JVM建立對象並不會調用任何構造函數。爲了反序列化一個對象,咱們須要讓咱們的類實現Serializable接口,雖然該接口沒有任何方法。不會調用任何構造函數原型

相關文章
相關標籤/搜索