欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 多列子查詢,java的反射到底是有什么用處

黃文隆2年前24瀏覽0評論
mysql 多列子查詢,java的反射到底是有什么用處?

謝邀。在Java中,反射是一種API,用于在運行時檢查或修改方法、類、接口的行為。

反射所需的類在java.lang.reflect包下提供。反射為我們提供了有關對象所屬類的信息,以及可以使用該對象執行的該類的方法。通過反射,我們可以在運行時調用方法,而與它們所使用的訪問說明符無關。反射可用于獲取有關一些的有用信息類 getClass()方法用于獲取對象所屬的類的名稱。構造函數 getConstructors()方法用于獲取對象所屬類的公共構造函數。方法 getMethods()方法用于獲取對象所屬類的公共方法。簡單的例子

為了先清楚下反射的用處,我們將看一個非常基本的示例,該示例在運行時檢查簡單Java對象的字段。

讓我們創建一個簡單的Person類,其中僅包含name和age字段,而根本不包含任何方法。這是Person類:

現在,我們將使用Java反射來發現此類所有字段的名稱。為了欣賞反射的力量,我們將構造一個Person對象并將Object作為引用類型:

這個測試告訴我們,我們能夠得到的數組Field對象從我們人的對象,即使參考對象是對象的父類。

在上面的示例中,我們僅對這些字段的名稱感興趣,但是還有很多事情可以做,我們將在后續部分中看到更多示例。

注意我們如何使用一個輔助方法來提取實際的字段名,這是一個非常基本的代碼:

重點觀察如果知道方法的名稱和參數類型,則可以通過反射調用該方法。為此,我們使用以下兩種方法getDeclaredMethod():創建要調用的方法的對象。該方法的語法是Class.getDeclaredMethod(名稱,參數類型)name-要創建其對象的方法的名稱parametertype-參數是Class對象的數組

invoke():要在運行時調用類的方法,我們使用以下方法——

Method.invoke(對象,參數)如果類的方法不接受任何方法 參數,然后將null用作參數。通過反射,我們可以在類的類對象的幫助下訪問類的私有變量和方法,并通過使用對象來調用方法,如上所述。為此,我們使用以下兩種方法。

Class.getDeclaredField(FieldName):用于獲取私有字段。返回指定類型字段名稱的字段類型的對象。Field.setAccessible(true): 允許訪問該字段,而與該字段使用的訪問修飾符無關。

使用發射的優勢可擴展性功能:應用程序可以通過使用其完全限定的名稱創建可擴展性對象的實例來使用外部的用戶定義類。調試和測試工具:調試器使用反射的屬性檢查類的私有成員。缺點性能開銷:反射操作比非反射操作的性能要慢,因此應避免在對性能敏感的應用程序中經常調用的代碼段中避免這樣做。內部曝光:反射代碼破壞了抽象,因此可能會隨著平臺升級而改變行為。