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

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

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

    Java民工的鐵皮房

    Consciousness Of Programming - wjywilliam 想飛,總是會飛的......
    posts - 8, comments - 14, trackbacks - 0, articles - 9
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Reflct反射機制一些基本用法

    Posted on 2009-02-10 14:40 wjywilliam 閱讀(2124) 評論(5)  編輯  收藏 所屬分類: Java
    PS:若轉(zhuǎn)載發(fā)布此文章或相關(guān)代碼,請注明出處,謝。
    最近用到了reflct機制,此前并不熟悉,趁此機會留個底,怕忘記了,只是些小應(yīng)用而已。

    1. 動態(tài)匹配方法名字賦值
    需求:
    一個tempLoan bean里面有幾個屬性 setPsAddr11,setPsAddr12,setPsAddr13,但是從DB里面取出來的只有一個psAddr1 field值,值是
    “A~B~C”的結(jié)構(gòu)。需要分別把值A(chǔ)賦到psAddr11,B賦到psAddr12,C賦到psAddr13。
    為了以免后面再增加屬性例如4,5,6之類的,不采取手工硬塞動作,故此采取反射,統(tǒng)一邏輯處理。
    如下代碼:
    1Class?tempLoanClass?=?tempLoan.getClass();
    2????????????????if(tempLoan.getPsAddr1()!=null){
    3????????????????????List<String>?psAddress1List?=?Arrays.asList(tempLoan.getPsAddr1().split("~"));
    4????????????????????for?(int?x?=?0;?x?<?psAddress1List.size();?x++)?{
    5????????????????????????Method?method?=?tempLoanClass.getDeclaredMethod("setPsAddr1"?+?(x?+?1),?new?Class[]?{?String.class?});
    6????????????????????????method.invoke(tempLoan,?new?Object[]?{?psAddress1List.get(x)?});
    7????????????????????}
    ????
    8????????????????}
    如上用loop來映射set的方法,由對應(yīng)的get方法取出來list的元素的值,按照順序動態(tài)賦給tempLoan 的set方法。

    2. 根據(jù)參數(shù)對應(yīng)Bean里面的變量名,把Bean內(nèi)所對應(yīng)的變量的值賦給另一個變量
    需求:
    根據(jù)傳入?yún)?shù)一個變量名和一個BO,匹配BO里面的屬性,若與傳入變量名的值相同,則取BO對應(yīng)屬性的值賦于另一變量
    ?1public?void?setValueInField(Loan?loan,?String?fieldName,?String?fieldValue)?throws?Exception{
    ?2????????try{
    ?3????????????Class?tempLoanClass?=?loan.getClass();
    ?4????????????Method[]?methods?=?tempLoanClass.getMethods();
    ?5????????????for(int?x=0;?x<methods.length;?x++){
    ?6????????????????String?methodName?=?methods[x].getName();
    ?7????????????????if(methodName.indexOf("get")>-1){
    ?8????????????????????if(methodName.substring(3,?methodName.length()).equalsIgnoreCase(fieldName)){
    ?9????????????????????????Object?value?=?methods[x].invoke(loan,?new?Object[]?{});
    10????????????????????????if(value?!=?null){
    11????????????????????????????fieldValue?=?value.toString();
    12????????????????????????}

    13????????????????????}

    14????????????????}

    15????????????}

    16????????}
    catch(Exception?e){
    17????????????e.printStackTrace();
    18????????}

    19????}

    3. 這個比較尋常了,就是列出一個Class所有的全局變量名
    //?Retrieve?global?variable?object?in?class
    ???Object?obj?=?new?Mytest();
    ????????Field[]?fields?
    =?obj.getClass().getDeclaredFields();
    ????????
    for?(int?i?=?0,?len?=?fields.length;?i?<?len;?i++)?{
    ????????????String?varName?
    =?fields[i].getName();
    ????????????
    try?{
    ????????????????
    boolean?accessFlag?=?fields[i].isAccessible();
    ????????????????fields[i].setAccessible(
    true);
    ????????????????Object?o?
    =?fields[i].get(obj);
    ????????????????System.out.println(
    "Include?variable:"?+?varName?+?"?=?"?+?o);
    ????????????????fields[i].setAccessible(accessFlag);
    ????????????}
    ?catch?(IllegalArgumentException?ex)?{
    ????????????????ex.printStackTrace();
    ????????????}
    ?catch?(IllegalAccessException?ex)?{
    ????????????????ex.printStackTrace();
    ????????????}

    ????????}


    ?

    評論

    # re: Reflct反射機制用法的一些應(yīng)用  回復(fù)  更多評論   

    2009-02-10 15:23 by ci
    good....

    # re: Reflct反射機制用法的一些應(yīng)用  回復(fù)  更多評論   

    2009-02-10 23:38 by 與你同飛
    java的基本功

    # re: Reflct反射機制一些基本用法  回復(fù)  更多評論   

    2009-03-01 20:25 by baby
    Excellent~ support you, wjywilliam

    # re: Reflct反射機制一些基本用法  回復(fù)  更多評論   

    2009-05-23 08:00 by xk
    非常不錯,有需求有解決辦法,我一下就看懂反射了,謝謝!~~~

    # re: Reflct反射機制一些基本用法  回復(fù)  更多評論   

    2009-10-14 17:30 by gggggggg
    <script>alert('AA')</script>

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩精品无码免费视频| 久久久久成人片免费观看蜜芽| 亚洲情侣偷拍精品| 伊人久久免费视频| 亚洲日韩精品无码专区加勒比☆ | 在线看免费观看AV深夜影院| 亚洲AV无码一区二区三区性色| 国产黄色一级毛片亚洲黄片大全| 亚欧免费无码aⅴ在线观看| 自拍偷区亚洲国内自拍| 亚洲综合国产一区二区三区| 一级女人18毛片免费| 一级毛片免费不卡| 久久精品亚洲AV久久久无码| 亚洲啪啪AV无码片| 在线观看免费毛片| 日韩内射激情视频在线播放免费| 亚洲欧好州第一的日产suv| 亚洲va无码手机在线电影| 小小影视日本动漫观看免费| 亚洲a一级免费视频| 日本在线观看免费高清| 亚洲一区二区三区免费在线观看| 亚洲区不卡顿区在线观看| 特级做A爰片毛片免费69| 国产成人无码区免费内射一片色欲| 亚洲av日韩av永久无码电影| 久久亚洲日韩看片无码| 国产亚洲精aa成人网站| 永久免费视频v片www| 中文字幕av无码无卡免费 | 成年人性生活免费视频| 午夜免费啪视频在线观看 | 大学生高清一级毛片免费| 午夜免费福利小电影| yy一级毛片免费视频| 亚洲av成本人无码网站| 亚洲国产综合精品中文第一| 亚洲黄网在线观看| 亚洲AV无码专区国产乱码4SE| 国产精品亚洲不卡一区二区三区|