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

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

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

    Heis的Blog

    保持簡(jiǎn)單,保持愚蠢
    隨筆 - 29, 文章 - 1, 評(píng)論 - 122, 引用 - 0
    數(shù)據(jù)加載中……

    Jakarta Commons Cookbook讀書筆記--Commons BeanUtils

    Jakarta Commons Cookbook讀書筆記系列

    2 Apache Commons BeanUtils 1.7

    功能說(shuō)明:顧名思義,Bean Utility就是Bean小工具,主要是封裝了反射(reflection)和自省(introspection)的API(可以查看java.lang.reflect和java.beans文檔),對(duì)bean進(jìn)行操作。
    主要功能:操作Bean的屬性,針對(duì)Bean屬性排序,Bean和Map的轉(zhuǎn)換,創(chuàng)建動(dòng)態(tài)的Bean等
     
    2.1 org.apache.commons.beanutils.PropertyUtils 利用反射操作bean的屬性

    getSimpleProperty()通過(guò)反射讀取屬性
    Person person=new Person();
    person.setName
    =("heis");
    String name
    =(String)PropertyUtils.getSimpleProperty(person,"name");->heis

    getNestedProperty()檢索嵌套的bean屬性
    Book book=new Book();
    book.setAuthor(person);
    String authorName
    =(String)PropertyUtils.getNestedProperty(book,"author.name");//得到person的name

    getIndexedProperty()訪問(wèn)數(shù)組或List型內(nèi)Object的屬性
    Chapter chapter1=new Chapter();
    Chapter chapter2
    =new Chapter();
    book.getChapters().add(chapter1);
    book.getChapters().add(chapter2);
    Chapter chapter
    =(Chapter)PropertyUtils.getIndexedProperty(book,"chapter[0]");

    getMappedProperty()訪問(wèn)Map型bean屬性的值
    Person person=new Person();
    person.setName
    =("heis");
    Map favorites
    =new HashMap();
    favorites.put(
    "food","rice");
    person.setFavorite(favorites);
    String favorFood
    =(String)PropertyUtils.getMappedProperty(person,"favorites(food)");->rice

    getProperty()和setProperty()可以訪問(wèn)任何bean屬性,通過(guò)表達(dá)式可以完成上面方法的功能
    這是一個(gè)樹型的Bean屬性視圖
    Book book
    |--List authors
          
    |--[0]->Person person
                        
    |--Map favorites
                                 
    |--Entry(key->"food",value->"")
    PropertyUtils.setProperty(book,
    "authors[0].favorites(food)","rice");
    String favorFood
    =(String)PropertyUtils.getProperty(book,"authors[0].favorites(food)");->rice

    isReadable()和isWritable()檢查bean是否可讀(有g(shù)etter)或可寫(有setter)
    PropertyUtils.isReadable(book,"name");
    PropertyUtils.isWritable(book,
    "name");

    getPropertyType()獲取屬性類型
    System.out.println(PropertyUtils.getPropertyType(person,"favorites"));->java.util.Map

    copyProperty()復(fù)制Bean屬性,只復(fù)制引用,final類型和原始類型(primitive type)
    Book book1=new Book();
    book1.setName(
    "Commons Cookbook Notes");
    Book book2
    =new Book();
    PropertyUtils.copyProperty(book2,book1);
    //將book1的name屬性copy到book2

    describe()創(chuàng)建包含Bean屬性的Map
    Person person=new Person();
    person.setName(
    "heis");
    Book book
    =new Book();
    book.setName(
    "Commons Cookbook Notes");
    book.setAuthor(person);
    Map propMap
    =PropertyUtils.describe(book);
    propMap.get(
    "name");->Commons Cookbook Notes
    propMap.get(
    "author");->person

    Jakarta Commons Cookbook讀書筆記系列



    程序員的一生其實(shí)可短暫了,這電腦一開一關(guān),一天過(guò)去了,嚎;電腦一開不關(guān),那就成服務(wù)器了,嚎……

    posted on 2009-11-21 17:44 Heis 閱讀(1622) 評(píng)論(3)  編輯  收藏 所屬分類: Jakarta Commons Cookbook讀書筆記

    評(píng)論

    # re: Jakarta Commons Cookbook讀書筆記--Commons BeanUtils  回復(fù)  更多評(píng)論   

    功能很強(qiáng)大,只是不經(jīng)常用,收了呵呵
    2009-11-22 21:07 | bobby

    # re: Jakarta Commons Cookbook讀書筆記--Commons BeanUtils  回復(fù)  更多評(píng)論   

    性能應(yīng)該大大不如直接通過(guò)bean自己的get set方法得到屬性值吧?
    2009-11-23 13:46 | 大衛(wèi)

    # re: Jakarta Commons Cookbook讀書筆記--Commons BeanUtils  回復(fù)  更多評(píng)論   

    @大衛(wèi)
    雖然jdk5以后反射性能有了很大的提升,但是反射性能肯定會(huì)差一點(diǎn)。通常情況下,如果可以通過(guò)getter和setter訪問(wèn),盡量使用getter和setter,這樣重構(gòu)起來(lái)也簡(jiǎn)單。
    2009-11-23 19:09 | Heis
    主站蜘蛛池模板: 午夜国产精品免费观看| 亚洲av日韩aⅴ无码色老头| 成人网站免费大全日韩国产 | 日本成人在线免费观看| 国产人成亚洲第一网站在线播放| 国产精品成人免费福利| 亚洲一级黄色大片| 大学生一级毛片免费看| 亚洲区日韩精品中文字幕| 麻豆国产VA免费精品高清在线| 亚洲欧洲av综合色无码| 免费精品国产自产拍观看| 免费福利在线观看| 77777亚洲午夜久久多人| 国产麻豆一精品一AV一免费| 久久国产亚洲高清观看| 国产精品久久久久久久久久免费| 亚洲中文字幕无码爆乳| 亚洲成A∨人片天堂网无码| 久久不见久久见免费影院www日本| 亚洲熟妇av一区二区三区| 无码日韩精品一区二区免费暖暖 | 亚洲第一se情网站| 国产精品亚洲产品一区二区三区| 久久久WWW免费人成精品| 亚洲Av无码专区国产乱码DVD| 亚洲一级免费视频| 亚洲国产成人精品无码区花野真一 | 久久久久久久亚洲精品| a国产成人免费视频| 亚洲日韩乱码中文无码蜜桃臀| 青青草无码免费一二三区| 亚洲精品网站在线观看不卡无广告| 人妻仑刮八A级毛片免费看| 亚洲AV午夜福利精品一区二区| 日本免费人成在线网站| 免费国产在线精品一区| 久久亚洲精品无码AV红樱桃| 永久免费看mv网站入口| 13小箩利洗澡无码视频网站免费| 亚洲国产精品综合福利专区|