<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熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久午夜羞羞影院免费观看| 久久国产乱子伦精品免费看| aa级一级天堂片免费观看| 亚洲视频2020| 久久99免费视频| 亚洲国产女人aaa毛片在线| 青青操免费在线观看| 亚洲AV无码精品无码麻豆| 人人玩人人添人人澡免费| 久久久久亚洲av无码尤物| 午夜免费福利片观看| 亚洲综合在线成人一区| 免费三级毛片电影片| 亚洲熟妇无码一区二区三区| 日本无卡码免费一区二区三区| 亚洲AV日韩AV无码污污网站| 亚洲?v无码国产在丝袜线观看| 一级毛片在播放免费| 国产日韩成人亚洲丁香婷婷| 久久美女网站免费| 亚洲精品视频在线免费| 午夜老司机免费视频| 国产99精品一区二区三区免费| 久久亚洲精品视频| 免费看韩国黄a片在线观看| 国产成人亚洲精品91专区高清 | 亚洲va无码va在线va天堂| 99精品视频在线观看免费专区| 亚洲六月丁香六月婷婷色伊人| 免费看片A级毛片免费看| h在线看免费视频网站男男| 老司机亚洲精品影院无码| 午夜免费福利影院| 中文字幕无码毛片免费看 | 亚洲国产精品成人综合久久久| 午夜dj免费在线观看| 国产高潮久久免费观看| 亚洲导航深夜福利| 亚洲国产aⅴ综合网| 亚洲成人在线免费观看| 一级看片免费视频|