java反射與動態代理

來源:互聯網
上載者:User

標籤:java   java反射   動態代理   

一直分不清的兩個東西,今天記錄一下,java反射與動態代理

java反射:1、在運行時分析類的能力

     2、在運行是查看對象

   3、實現數組的作業碼

   4、利用Method對象

 在java.lang.reflect包中有三個類Field、Method、Constructor分別用於描述類的域、方法和構造器,這三個類都有一個叫做getName的方法,用來返回相應的名稱。

Field類有一個getType方法,用於返回描述域所數類型的Class類型對象。Method和Contructor類包含有能夠報告參數類型的方法,Method類型還可以報告傳回型別

這是三個類還有一個叫做getModifiers的方法,它將返回一個整型數值,用不同的位開關設定描述public和static這些修飾的使用狀況。

另外,還可以利用java.lang.reflect包中的Modifier類的靜態方法分析getModifiers返回的整型數值。例如Modifire.isPublic,isPrivate,isFinal等等

class類中的getFields,getMethods和getConstructors方法將分別返回類支援的public域,方法和構造器數組,其中包括超類的共有成員。Class類的getDeclareFields

getDeclareMethods和getDeclaredConstructors方法分別返回類中聲明的全部與,方法和構造器數組,其中包括私人和受保護的成員,但不包括超類的成員,以下java代碼是用了反射的一小段代碼

Class<Test> c=Test.class;Test t=c.newInstance();t.setId(1);Field f=c.getDeclaredField("id");f.setAccessible(true);System.out.println(f.get(t));f.setAccessible(false);Method m=c.getMethod("getId");Object o=m.invoke(t);System.out.print(o);

動態代理:代理模式 ,這是一種設計模式 而java反射是java語言分析類結構,動態執行java程式的本身具有的一種能力,和模式沒關係
代理模式是常用的java設計模式,他的特徵是代理類與委託類有同樣的介面,代理類主要負責為委託類預先處理訊息、過濾訊息、把訊息轉寄給委託類,以及事後處理訊息等。代理類與委託類之間通常會存在關聯關係,一個代理類的對象與一個委託類的對象關聯,代理類的對象本身並不真正實現服務,而是通過調用委託類的對象的相關方法,來提供特定的服務。 

當然兩者結合起來可以幹很多事,比如面向aop編程,Spring的aop就是這麼乾的,這裡不多說,並且很多架構都用了反射,在執行某個方法,擷取參數時就會用到,反射是擷取不到方法執行的參數的

資料引用:java核心技術第一版


java反射與動態代理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.