摘要:使用反射可以檢視類的構造函數,并且能在運行時實例化對象。示例如下數組包含一個類定義的所有構造函數的對象實例。下面的示例代碼返回一個類的擁有一個類型參數的的構造函數。如果沒有給定參數的構造函數,如例子中的,會拋出。
使用反射可以檢視類的構造函數,并且能在運行時實例化對象。這些是通過java 類java.lang.reflect.Constructor實現的。本文將更詳細的介紹Constructor類。
獲得構造函數對象Constructor類可以通過class對象獲得。示例如下:
Class aClass = ...//obtain class object Constructor[] constructors = aClass.getConstructors();
Constructor[]數組包含一個類定義的所有public構造函數的對象實例。
如果你知道要訪問的構造函數的精確參數,有比使用獲得所有構造函數更優的方法。下面的示例代碼返回一個類的擁有一個String類型參數的public的構造函數。
Class aClass = ...//obtain class object Constructor constructor = aClass.getConstructor(new Class[]{String.class});
如果沒有給定參數的構造函數,如例子中的String.class,會拋出NoSuchMethodException。
構造函數的參數你可以使用下方的代碼讀取一個構造函數的參數:
Constructor constructor = ... // obtain constructor - see above Class[] parameterTypes = constructor.getParameterTypes();使用構造函數對象實例化對象
你可以使用下方的代碼實例化對象:
//get constructor that takes a String as argument Constructor constructor = MyObject.class.getConstructor(String.class); MyObject myObject = (MyObject)constructor.newInstance("constructor-arg1");
Constructor.newInstance()方法的參數是一個可變參數列表,但是你必須提供你要調用的構造函數的精確參數。即如果參數類型是String,則必須提供一個String類別的值。(形參與實參必須一一對應)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77254.html
摘要:有一個參數的構造方法姓名有多個參數的構造方法姓名年齡這的執行效率有問題,以后解決。私有構造方法私有的構造方法年齡反射獲取對象的三種方式通過對象名方法獲取通過類名方式獲得通過方法獲得在運行期間,一個類,只有一個對象產生。 原文地址 反射簡單來說,就是動態加載對象,并對對象進行剖析。在Java中的反射機制是指在運行狀態中,對于任意一個類,都能夠知道并獲取這個類的所有屬性和方法。 Java反...
摘要:簡單說反射技術可以對一個類進行解剖。反射的基本步驟獲得對象,就是獲取到指定的名稱的字節碼文件對象。所以一般情況下,被反射的類,內部通常都會提供一個公有的空參數的構造函數。 定義 其實就是動態加載一個指定的類,并獲取該類中的所有的內容。 而且將字節碼文件封裝成對象,并將字節碼文件中的內容都封裝成對象,這樣便于操作這些成員。 簡單說:反射技術可以對一個類進行解剖。 反射的好處: 大大的增強...
摘要:通過反射獲取帶參無返回值成員方法并使用設置安全檢查,訪問私有構造函數必須創建實例這種不行,注意和方法需要傳遞參數測試復制這個功能獲取私有方法,同樣注意和的區別賦予訪問權限調用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...
摘要:構造器創建實例構造器和方法的反射類不同點在于,可以創建實例,代碼如下所示。 上一篇文章介紹了反射的基本概念以及獲取類相關信息的反射API,這一章節主要記錄如何對類的成員進行操作的相關反射API。 操作類成員的類 反射API中提供了如下接口,用于對類的成員進行操作。 java.lang.reflect.Member 該接口主要有以下三個實現類,用于對類成員中的字段,方法和構造器進行操作...
閱讀 2823·2021-10-11 10:57
閱讀 2417·2021-08-27 16:20
閱讀 1395·2019-08-30 13:03
閱讀 1573·2019-08-30 12:50
閱讀 3353·2019-08-29 14:16
閱讀 1571·2019-08-29 11:12
閱讀 1623·2019-08-28 17:53
閱讀 2905·2019-08-27 10:58