更新時間:2022-08-25 10:45:00 來源:動力節點 瀏覽1959次
Java如何創建類的對象?動力節點小編來告訴大家。
使用 new 關鍵字調用對象的構造器;
使用 Java 反射的 newInstance() 方法;
使用 Java Object 類的 clone() 方法;
使用對象流 ObjectInputStream的readObject()方法讀取序列化對象;
最常見的Java對象的構造方法,通過調用類提供的構造器創建對象。
Java 反射中有一個 newInstance() 方法,可以創建對象,步驟如下:獲取要創建的類的 Class 對象。如果只需要調用這個類的訪問權限為 public 無參構造器,直接使用 Class 類的實例方法 newInstance()。獲取 Class 對象的構造器對象,通過調用 Class 類的實例方法 getDeclaredConstractors() 來獲取構造器對象的數組。(獲取所有構造器,無視訪問權限的限制,數組順序按照代碼中的順序決定)如果調用的構造器是 private 的,需要調用 Constractor 類的父類 AccessibleObject 類的實例方法 setAccessible(true) 來打破訪問限制。使用 Constractor 類的實例方法 newInstance()。獲取 Class 對象的方法有3個,此處不多贅述。獲取Constractor 對象的方法有4個,此處不多贅述。
Object 類是所有類的直接或間接父類,Object 類中提供了 實例方法 native(),在給定對象的基礎上,創建一個完全相同的對象。步驟如下:想要使用 clone() 方法創建對象的類,實現 Cloneable 接口。在類的內部,重寫 Object 類的 clone() 方法。
備注:
沒有實現 Cloneable 接口,會拋出 CloneNotSupportedException 異常。Object 類提供的 clone() 方法,訪問權限是 protected,所以如果不重寫 clone() 方法,是沒有權限調用的。Object 類的 clone() 方法,是 native 方法。
這個方法一共分兩步:將對象序列化,存儲到一個文件中。從文件中反序列化,得到類對象。
序列化:想要序列化對象的類,實現Serializable接口。使用文件輸出流FileOutputStream創建存儲序列化之后對象的文件。使用對象輸出流ObjectOutputStream的實例方法writeObject(obj)。判斷類中是否存在,名為writeReplace(),返回類型為Object的方法,若有,寫入這個方法的返回值;否則,寫入obj對象。
反序列化:使用文件輸入流FileInputStream找到存儲序列化對象的文件。使用對象輸入流ObjectInputStream的實例方法readObject()。判斷類中是否存在,名為readResolve(),返回類型為Object的方法,若有讀取這個對象;否則,反序列化文件中的對象流。
備注:在類中,writeReplace()和readResoleve()是兩個非常特殊的方法,其特征簽名需要嚴格限制:方法名限定,參數個數限定為0,返回類型必須是Object,不能為Object的子類,但是可以拋出不同的異常。訪問修飾符沒有限制,但一般推薦為private,防止誤操作。其特殊的地方還在于將其設為private方法,沒有其他方法調用的情況下,編譯器不會發出警告。
以上就是關于“Java創建類的對象”介紹,大家如果對此比較感興趣,想了解更多相關知識,可以關注一下動力節點Java在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習