欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
查看Java Reflection類(lèi)內部情況 - Builder開(kāi)發(fā)者在線(xiàn)

查看Java Reflection類(lèi)內部情況

開(kāi)發(fā)者在線(xiàn) Builder.com.cn 更新時(shí)間:2006-12-10作者:Builder.com.cn 來(lái)源:

本文關(guān)鍵詞: Java

Java Reflection(反射)是一種在運行期間查看Java對象內部情況的技術(shù),包括Java對象的變量、支持的方法、實(shí)現的接口、擴展的類(lèi)——基本上在編譯時(shí)你能想知道的關(guān)于對象的任何東西。

Reflection API位于java.lang.reflect包中,在所有J2SE安裝程序中都有。它主要是為一些通用程序設計的,如數據庫瀏覽器或可視代碼編輯器,但是它可以被運用在其他任何應用軟件中。Reflection用于處理之前你所知甚少的類(lèi)文件。反射需要很高的間接制造費用,所以在使用之前,你應該確定自己不能僅憑一個(gè)簡(jiǎn)單的接口——Class.forName(),而要用一個(gè)委托對象。

實(shí)例

列表 A含有一個(gè)使用Reflection代碼的例子。列表A中的代碼與下列代碼等同:

newTestClass().setName("TestName");

第一個(gè)例子中的代碼用反射動(dòng)態(tài)地調用新建對象的方法。這使用起來(lái)相當方便,但相對較慢。

基本技巧

Reflection中包含了兩種基本的技術(shù):探索和按名稱(chēng)使用。以下是對兩種方法的描述:

  • 探索指采用一個(gè)對象或類(lèi),并發(fā)現其成員、超類(lèi)、實(shí)現的接口,然后盡可能地使用被發(fā)現的元素。
  • 按名字使用指以一個(gè)元素的符號名開(kāi)始,并使用已命名的元素。

通常,探索方法以一個(gè)對象開(kāi)始,并通過(guò)調用Object.getClass()方法獲得對象的類(lèi)。類(lèi)對象有很多方法發(fā)現類(lèi)的內容。以下是部分方法:

  • getMethods():返回一組表示類(lèi)或接口的所有公共方法的方法對象數組。
  • getConstructors():返回一組表示類(lèi)的所有公共構造器的構造器對象數組。
  • getFields():返回一組表示類(lèi)或接口所有公共字段的字段對象數組。
  • getClasses():返回一組表示所有屬于類(lèi)或接口的公共類(lèi)和接口(例如,內部類(lèi))的類(lèi)對象數組。
  • getSuperclass():返回表示類(lèi)或接口的超類(lèi)的類(lèi)對象(接口返回為空值)。
  • getInterfaces():返回一組表示類(lèi)或接口執行的所有接口的類(lèi)對象數組。

你可以通過(guò)探索,即應用類(lèi)字面(如MyClass.class)或使用類(lèi)名(如Class.forName("mypackage.MyClass"))獲得類(lèi)對象。有了類(lèi)對象,成員對象方法、構造器或字段可以通過(guò)使用成員的符號名獲得。以下是最重要的一些技術(shù):

  • getMethod("methodName", Class...):返回表示接受類(lèi)參數指定參數的類(lèi)或接口中名為“methodName”的公共方法的方法對象。
  • getConstructor(Class...):返回表示接受類(lèi)參數指定參數的類(lèi)公共構造器的構造器對象。
  • getField("fieldName"):返回表示類(lèi)或接口中名為“fieldname”的公共字段的字段對象。

你可以使用Method、Constructor和Field(字段)對象動(dòng)態(tài)地訪(fǎng)問(wèn)類(lèi)表示成員。例如:

  • Field.get(Object):返回一個(gè)包含輸入get()對象實(shí)例的字段值對象。(如果字段對象表示靜態(tài)字段,那么對象參數便被忽略,也可能為空。)
  • Method.invoke(Object, Object...):返回一個(gè)包含為輸入invoke()的第一個(gè)對象參數實(shí)例調用方法的結果的對象。其余對象參數被傳遞給輸入方法。(如果方法對象表示一個(gè)靜態(tài)方法,那么第一個(gè)對象參數便被忽略,也可能為空。)
  • Constructor.newInstance(Object...):返回調用構造器的新對象實(shí)例。對象參數輸入構造器。(注意類(lèi)的無(wú)參數構造器也可以通過(guò)newInstance()被調用。)

創(chuàng )建數組和代理類(lèi)

java.lang.reflect包提供一個(gè)數組,其中包含了可創(chuàng )建和操控數組對象的靜態(tài)方法。從J2SE 1.3開(kāi)始,java.lang.reflect包還提供了一個(gè)代理類(lèi),它支持動(dòng)態(tài)創(chuàng )建用來(lái)實(shí)現指定接口的代理類(lèi)。

代理類(lèi)的執行由執行InvocationHandler接口的一個(gè)補充對象完成。代理對象的每個(gè)調用方法調用InvocationHandler的方法調用(對象、方法、對象[])——第一參數是代理對象,第二參數是表示代理所執行接口的方法的方法對象,而第三參數是輸入接口方法的參數數組。invoke()方法返回一個(gè)對象結果,其中包含返回調用代理接口方法的代碼的結果。

更多閱讀參考

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
學(xué)習Java的30個(gè)基本概念2222,Java基礎,編程開(kāi)發(fā),Java,好視點(diǎn)技術(shù)文檔
歡迎光臨 - 琳婕小筑-老貓的理想 - Java新手入門(mén)的30個(gè)基本概念 -
Java新手入門(mén)的30個(gè)基本概念
Java反射之Field用法
11提出了java語(yǔ)言的11個(gè)關(guān)鍵特性
C#學(xué)習筆記
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久