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

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

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

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    利用反射取得泛型信息

    一、傳統通過反射取得函數的參數和返回值

    import ?java.lang.reflect.Method;
    import ?java.lang.reflect.ParameterizedType;
    import ?java.lang.reflect.Type;
    import ?java.util.ArrayList;
    import ?java.util.Map;
    import ?java.util.List;
    import ?java.util.Set;
    ?

    import ?sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
    ?
    public ? class ?Foo {
    ????
    public ? static ? void ?main(String[]?args)? throws ?Exception? {
    ?????Method[]?methods?
    = ?Foo. class .getDeclaredMethods();
    ?????
    for (Method?method?:?methods) {
    ??????Class[]?paramTypeList?
    = ?method.getParameterTypes();
    ??????
    ??????Class?returnType?
    = ?method.getReturnType();
    ??????System.out.println(returnType);
    ??????
    for (Class?clazz:paramTypeList) {
    ??????????System.out.println(clazz);
    ??????}

    ??????System.out.println();
    ?????}

    ?}

    ????
    public ? static ?String?test1(String?str) {
    ?????
    return ? null ;
    ????}

    ????
    public ? static ?Integer?test2(String?str,Integer?i) {
    ?????
    return ? null ;
    ????}

    ???
    }



    二、在有泛型的時候,取得參數和返回值的集合類的泛型信息

    import ?java.lang.reflect.Method;
    import ?java.lang.reflect.ParameterizedType;
    import ?java.lang.reflect.Type;
    import ?java.util.ArrayList;
    import ?java.util.Map;
    import ?java.util.List;
    import ?java.util.Set;

    import ?sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;

    public ? class ?Foo? {
    ????
    public ? static ? void ?main(String[]?args)? throws ?Exception? {
    ????????Method[]?methods?
    = ?Foo. class .getDeclaredMethods();
    ????????
    for ?(Method?method?:?methods)? {
    ????????????System.out.println(
    " returnType: " );
    ????????????Type?returnType?
    = ?method.getGenericReturnType();
    ????????????
    if ?(returnType? instanceof ?ParameterizedType) {
    ????????????????Type[]?types?
    = ?((ParameterizedType)returnType).getActualTypeArguments();
    ????????????????
    for (Type?type:types) {
    ????????????????????System.out.println(type);
    ????????????????}

    ????????????}

    ????????????System.out.println(
    " paramTypeType: " );
    ????????????Type[]?paramTypeList?
    = ?method.getGenericParameterTypes();
    ????????????
    for ?(Type?paramType?:?paramTypeList)? {
    ????????????????
    if ?(paramType? instanceof ?ParameterizedType) {
    ????????????????????Type[]?types?
    = ?((ParameterizedType)paramType).getActualTypeArguments();
    ????????????????????
    for (Type?type:types) {
    ????????????????????????System.out.println(type);
    ????????????????????}

    ????????????????}

    ????????????}

    ????????}

    ????}


    ????
    public ? static ?List < String > ?test3(List < Integer > ?list)? {
    ????????
    return ? null ;
    ????}


    ????
    private ? static ?Map < String,?Double > ?test4(Map < String,?Object > ?map)? {
    ????????
    return ? null ;
    ????}


    }

    三、應用環境
    例如你要寫一個程序,需求把一個如下的配置文件變成一個集合類。

    < config?name = " Foo.DoubleBean " >
    ????
    < element?key = " key1 " ?value = " 1.1 " />
    ????
    < element?key = " key2 " ?value = " 2.2 " />
    ????
    < element?key = " key3 " ?value = " 3.3 " />
    </ config >

    根據用戶的參數變成不同的集合類 Map<String.String>???? Map<String,Double>?? Map<String,Float>
    如果你要著手開發一個框架,這樣的需求會比較常見。這個時候取到setXX()函數的參數,就可以對應上邊的問題了。

    posted on 2007-02-10 23:24 dreamstone 閱讀(3837) 評論(0)  編輯  收藏 所屬分類: jdk相關

    主站蜘蛛池模板: 亚洲综合视频在线| 亚洲国产精品成人精品软件| 亚洲男人天堂av| 亚洲欧美成aⅴ人在线观看| 久久久久久av无码免费看大片| 在线永久看片免费的视频| 亚洲男人第一无码aⅴ网站| 91嫩草私人成人亚洲影院| 美女黄色免费网站| 日本人的色道免费网站| 一本色道久久综合亚洲精品高清 | 韩国免费a级作爱片无码| 99久久久国产精品免费无卡顿 | 国产好大好硬好爽免费不卡| 国产免费av片在线无码免费看| 亚洲黄色免费在线观看| 亚洲成人在线免费观看| 国产成人A亚洲精V品无码| 无码天堂亚洲国产AV| 国产又黄又爽又猛免费app| 亚洲av永久无码精品网站| 免费无码专区毛片高潮喷水| 免费电视剧在线观看| 亚洲视频欧洲视频| 无码专区永久免费AV网站| 亚洲欧洲校园自拍都市| 毛片免费视频观看| 精品国产综合成人亚洲区| 亚美影视免费在线观看| 亚洲第一黄片大全| 精品亚洲成a人在线观看| 亚洲偷自拍拍综合网| 日本高清免费中文在线看| 亚洲成A∨人片在线观看不卡| 中国精品一级毛片免费播放| 亚洲午夜在线电影| 国产免费私拍一区二区三区| 97在线视频免费公开视频| 亚洲精品国产精品乱码视色| 国产h肉在线视频免费观看| 美女黄色免费网站|