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

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

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

    posts - 262,  comments - 221,  trackbacks - 0
    Java Reflection包是Java反射技術的核心包,其中包含了若干重要的核心類,Class類就是其中之一。通過反射技術可以在運行時動態獲取如下的信息:

    1.構造方法信息:包括public型和所有類型
    2.成員變量信息:包括public型和所有類型(已繼承的和已定義的)
    3.成員方法信息:包括public型和所有類型(已實現的和已定義的)
    4.類信息:        包括內部類和其它對象成員
    5.繼承實現信息:包括繼承或實現的類、接口(直接的和所有的)

    Class類返回的對象一般有:Constructor,Filed,Method,Type,Class等,而Class類的某些get方法通常都需要指定參數類型,這些參數類型可以統一的通過:類名.class來獲得。

    通常情況下,getXxx方法拿到的都是public類型的,而getDeclaredXxxx方法拿到的是所有類型的。有些方法會一直向上追溯直到根類,如果找不到對應的信息則拋出異常。
     
    下面簡單列舉一下常用的API用法:

    【1】獲取構造函數對象
    A. getConstructor(Class... parameterTypes) :
        返回Class對象所代表的類中某個指定參數類型的public構造方法

    B. getConstructors() 
        返回Class對象所代表的類的所有public構造方法數組

    C. getDeclaredConstructor(Class... parameterTypes) 
        返回Class對象所代表的類或接口中某個指定參數類型的構造方法(不限于public)

    D. getDeclaredConstructors() 
        返回Class對象所代表的類中所有聲明的構造方法(不限于public)


    【2】獲取成員變量對象


    A. getField(String name) 
        返回Class對象所代表的類中某個public類型的成員變量
          1.如果指定了名稱,則返回該指定名稱的成員變量
          2.如果在Class中找不到該成員變量,則從Class的所有實現接口中逐個查找
          3.如果在步驟1~2中都找不到該成員變量,則從Class的直接父類中查找
          4.如果在步驟1~3中都找不到,則拋出一個NoSuchFieldException

    B. getFields() 
        返回Class對象所代表的類或接口中所有public的成員變量或常量
          1.該方法不單返回Class中定義的所有可訪問屬性,還包括繼承的所有可訪問屬性
          2.如果該Class沒有任何可訪問屬性,則返回一個長度為0的數組
          3.如果該Class代表了私有數據類型,數組,void數據類型對象,則返回一個長度為0的數組

    C. getDeclaredField(String name) 
        返回Class對象所代表的類或接口中某個成員變量(不限于public)

    D. getDeclaredFields() 
        
    返回Class對象所代表的類或接口中所有成員變量(不限于public)


    【3】獲取成員方法對象
    A. getMethod(String name, Class... parameterTypes) 
        返回Class對象所代表的類中某個指定名稱和參數類型的public成員方法

    B. getMethods() 
        
    返回Class對象所代表的類或接口中所有的public成員方法,包括自有的和繼承的

    C. getDeclaredMethod(String name, Class... parameterTypes) 
        返回Class對象所代表的類或接口中某個指定名稱和參數類型的成員方法(不限于public)

    D. getDeclaredMethods()
        
    返回Class對象所代表的類或接口中所有的成員方法,包括自有的基礎的(不限于public)


    【4】獲取Class對象
    A. getDeclaringClass() 
        假如Class對象所代表的類或接口,是另外一個類的成員,那么返回包含它的那個類

    B. getEnclosingClass() 
        返回Class對象所包含的匿名內部類

    C. getInterfaces() 
        返回Class對象所代表的類的所有實現的接口(不僅僅是直接的,還包括繼承的)

    D. getClasses() 
        返回Class對象所代表的類的所有public成員類、接口
          1.該方法不單返回Class中定義的所有公共成員類、接口,還包括繼承的類,接口
          2.如果該Class不含有任何公共的成員類、接口,則返回一個長度為0的數組
          3.如果該Class代表了私有類型數據,數組,void數據類型對象,則返回一個長度為0的數組

    E. getSuperClass()
        返回Class對象的直接父類


    【5】獲取Type對象
    A. getGenericInterfaces() 
        返回Class對象的直接實現/繼承的父接口
          1.如果Class實例代表了一個類,則返回一個包含所有直接實現接口的Type數組
          2.如果Class實例代表了一個接口,則返回一個包含所有直接繼承接口的Type數組
          3.如果Class實例代表了一個似有類型或void類型,則返回一個長度為0的Type數組
          4.如果Class實例沒有實現/繼承任何接口,則返回一個長度為0的Type數組

    B. getGenericSuperclass() 
        返回Class對象所代表的類直接父類 
          1.如果Class實例代表了Object類實例、接口、私有類型數據,void類型,則返回null
          2.如果Class實例代表了數組實例,則返回Object類型


    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2008-09-03 14:36 Paul Lin 閱讀(347) 評論(0)  編輯  收藏 所屬分類: J2SE
    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91在线亚洲综合在线| 国产精品久久亚洲不卡动漫| 99视频有精品视频免费观看| 亚洲av产在线精品亚洲第一站| 日本人的色道www免费一区| 成人免费观看男女羞羞视频| 久久久久久亚洲精品| 成年性生交大片免费看| eeuss影院免费92242部| 亚洲男人天堂影院| yy6080亚洲一级理论| ww4545四虎永久免费地址| 曰批免费视频播放在线看片二 | 亚洲成A人片在线观看中文| 久久av免费天堂小草播放| 亚洲欧洲自拍拍偷午夜色| 亚洲高清无码综合性爱视频| jjizz全部免费看片| 国产精品综合专区中文字幕免费播放| 亚洲嫩草影院在线观看| 亚洲国产成人久久综合一区77 | 精品免费tv久久久久久久| 亚洲成在人线aⅴ免费毛片| 亚洲AV成人一区二区三区AV| 四虎免费影院4hu永久免费| 免费国产污网站在线观看15| 四虎影视久久久免费观看| 国产成人精品亚洲日本在线| 亚洲AV综合色区无码另类小说| 又爽又黄无遮挡高清免费视频| 国产免费一区二区三区| 大地资源中文在线观看免费版 | 在线视频免费观看高清| 日本中文字幕免费高清视频| 香港一级毛片免费看| 亚洲最大的成人网| 91亚洲精品视频| 亚洲人JIZZ日本人| 免费少妇a级毛片人成网| 成熟女人特级毛片www免费| 美女视频黄免费亚洲|