<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    Java反射機制剖析:定義和API

      1、什么是Java反射機制

      Java的反射機制是在程序運行時,能夠完全知道任何一個類,及其它的屬性和方法,并且能夠任意調用一個對象的屬性和方法。這種運行時的動態獲取就是Java的反射機制。其實這也是Java是動態語言的一個象征。

      用一句話來概括反射就是加載一個運行時才知道的類以及它的完整內部結構。

      2、為什么要有Java反射機制

      我們為什么要用Java的反射機制呢?

      我認為有兩種:

      第一種:反射的目的就是為了擴展未知的應用。比如你寫了一個程序,這個程序定義了一些接口,只要實現了這些接口的dll都可以作為插件來插入到這個程序中。那么怎么實現呢?就可以通過反射來實現。就是把dll加載進內存,然后通過反射的方式來調用dll中的方法。

      第二種:在編碼階段不知道那個類名,要在運行期從配置文件讀取類名, 這時候就沒有辦法硬編碼new ClassName(),而必須用到反射才能創建這個對象。

      一個生活中??吹降睦佑兄诶斫馕覀優槭裁匆肑ava的反射機制:你進了一家飯店,你不知道他們都有那些菜,要多少錢。那么你第一件事情是干啥“服務員拿個菜單過來”,然后指著菜單說“我要這個,我要那個”。

      3、一起來看ReflectionAPI

      在生活中,我們使用一個未知的東西的時候總會用幫助來解決我們的使用問題,電視機有幫助,電腦有幫助,幾乎所有的事物都攜帶著它的一本幫助,Java的反射機制也不例外。

      在JDK中有Reflection API的幫助,它主要說明了什么是Java反射機制,這種反射機制提供了什么樣的屬性和方法,進一步我們能夠知道能夠通過它完成什么樣的工作

      下面咱就一起看看這部分的API。這些接口和類都位于lang包里。

      如圖:

      接口:

      類:


      簡單介紹一些類和接口的用法:

      1)Member成員是一種接口,反映有關單個成員(字段或方法)或構造方法的標識信息

      2)InvocationHandler是代理實例的調用處理程序實現的接口(這個接口的具體用法等到java反射機制剖析4著重介紹)

      3)Method提供一個類的方法的信息以及訪問類的方法的接口。

      示例:

    1. import java.lang.reflect.Method;  
    2.  
    3. public class TestMethod {  
    4.  
    5.     /**  
    6.      * @param args  
    7.      * @throws Exception   
    8.      */ 
    9.     public static void main(String[] args) throws Exception {  
    10.         // TODO Auto-generated method stub  
    11.         Class classType=Class.forName(args[0]);  
    12.         Method methods[]=classType.getDeclaredMethods();  
    13.         for(int i=0;i<methods.length;i++){  
    14.             System.out.println(methods[i].toString());  
    15.         }  
    16.     }  
    17.  
    18. }

      4)Filed提供一個類的域的信息以及訪問類的域的接口。

      示例:

    1. import java.lang.reflect.Field;  
    2.  
    3.  
    4. public class TestField {  
    5.  
    6.     /**  
    7.      * @param args  
    8.      * @throws Exception   
    9.      */ 
    10.     public static void main(String[] args) throws Exception {  
    11.         // TODO Auto-generated method stub  
    12.         Class classType=Class.forName(args[0]);  
    13.         Field[] fields = classType.getFields();  
    14.         for(int i=0;i<fields.length;i++){  
    15.         System.out.println(fields[i].toString());  
    16.         }  
    17.     }  
    18.  
    19. }

      5)Array類提供了動態創建和訪問Java數組的方法。

      示例:

    1. import java.lang.reflect.Array;  
    2.  
    3.  
    4. public class TestArray {  
    5.  
    6.     public TestArray(){  
    7.           
    8.     }  
    9.     /**  
    10.      * @param args  
    11.      * @throws Exception   
    12.      */ 
    13.     public static void main(String[] args) throws Exception {  
    14.           
    15.         Class<?> classType = Class.forName("java.lang.String");  
    16.           
    17.         Object array = Array.newInstance(classType, 10);  
    18.           
    19.         Array.set(array, 5"hello");  
    20.           
    21.         String s = (String)Array.get(array, 5);  
    22.         System.out.println(s);  
    23.           
    24.     }  
    25.  
    26. }

      6)Proxy提供動態地生成代理類和類實例的靜態方法(這個方法在java放射機制剖析4著重介紹)。

      其余的類和接口的使用方法詳見API


    posted on 2012-02-09 12:00 順其自然EVO 閱讀(172) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2012年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    26272829123
    45678910

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV无码久久久久网站蜜桃| 亚洲夂夂婷婷色拍WW47| 99久久久国产精品免费牛牛四川| 亚洲性一级理论片在线观看| 国产真实伦在线视频免费观看| 男女一进一出抽搐免费视频| 亚洲精品在线播放| 免费在线精品视频| 51在线视频免费观看视频| 亚洲精品无码日韩国产不卡av| 亚洲精品无码专区2| 亚洲成人免费网址| 日韩a毛片免费观看| 亚洲视频手机在线| 伊在人亚洲香蕉精品区麻豆| 久久精品人成免费| 国产亚洲综合视频| 中文字幕亚洲综合精品一区| 免费国产真实迷j在线观看| 日韩成人免费视频| 日韩亚洲翔田千里在线| 久久精品国产亚洲av高清漫画| 国产人妖ts在线观看免费视频| 99久热只有精品视频免费观看17| 色欲色欲天天天www亚洲伊| 久久亚洲春色中文字幕久久久| 免费久久精品国产片香蕉| 久久成人国产精品免费软件| 特a级免费高清黄色片| 美女视频黄免费亚洲| 亚洲AV无码专区国产乱码电影 | 亚洲AV中文无码乱人伦| 足恋玩丝袜脚视频免费网站| 一级特黄a大片免费| 亚洲欧美aⅴ在线资源| 亚洲综合亚洲国产尤物| 亚洲精品无码国产| 在线a亚洲v天堂网2018| 成人免费看吃奶视频网站| **一级一级毛片免费观看| 黄色免费在线网站|