2 內(nèi)省

1扼睬、內(nèi)省(Introspector) — JavaBean
內(nèi)省基于反射實現(xiàn),主要用于操作JavaBean悴势,通過內(nèi)省 可以獲取bean的getter/setter

2窗宇、為什么要學內(nèi)省特纤?
開發(fā)框架時军俊,經(jīng)常需要使用java對象的屬性來封裝程序的數(shù)據(jù),每次都使用反射技術完成此類操作過于麻煩捧存,所以SUN公司開發(fā)了一套API粪躬,專門用于操作java對象的屬性担败。

3、什么是JavaBean和屬性的讀寫方法?
通過內(nèi)省技術訪問(java.beans包提供了內(nèi)省的API)JavaBean的兩種方式镰官。
1)通過PropertyDescriptor類操作Bean的屬性
2)通過Introspector類獲得Bean對象的 BeanInfo提前,然后通過 BeanInfo 來獲取屬性的描述器( PropertyDescriptor ),通過這個屬性描述器就可以獲取某個屬性對應的 getter/setter 方法朋魔,然后通過反射機制來調(diào)用這些方法岖研。

4卿操、PropertyDescriptor
PropertyDescriptor顧名思義警检,就是屬性描述之意。它通過反射
快速操作JavaBean的getter/setter方法害淤。
重要方法:
getWriteMethod() – 獲取setter方法扇雕,返回Method對像
getReadMethod() – 獲取getter方法,返回Method對像

@Test
    public void test1() throws Exception{
        //得到Student類中的屬性窥摄,被封裝到了BeanInfo中
        BeanInfo bi = Introspector.getBeanInfo(Student.class);
        //得到類中的所有的屬性描述器
        PropertyDescriptor[] pds = bi.getPropertyDescriptors();
        System.out.println(pds.length);
        for(PropertyDescriptor pd:pds){
            System.out.println(pd.getName());
        }
    }
    @Test
    public void test2() throws Exception{
        Student s = new Student();
        PropertyDescriptor pd = new PropertyDescriptor("name", Student.class);
        Method m = pd.getReadMethod();//得到getName()方法
        String value = (String)m.invoke(s, null);
        System.out.println(value);
        Method m1 = pd.getWriteMethod();//得到setName()方法
        m1.invoke(s, "王云");//改變name的值
        System.out.println(s.getName());
    }
圖片1.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镶奉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子崭放,更是在濱河造成了極大的恐慌哨苛,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件币砂,死亡現(xiàn)場離奇詭異建峭,居然都是意外死亡,警方通過查閱死者的電腦和手機决摧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門亿蒸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掌桩,你說我怎么就攤上這事边锁。” “怎么了波岛?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵茅坛,是天一觀的道長。 經(jīng)常有香客問我则拷,道長灰蛙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任隔躲,我火速辦了婚禮摩梧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宣旱。我一直安慰自己仅父,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笙纤,像睡著了一般耗溜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上省容,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天抖拴,我揣著相機與錄音,去河邊找鬼腥椒。 笑死阿宅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的笼蛛。 我是一名探鬼主播洒放,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滨砍!你這毒婦竟也來了往湿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤惋戏,失蹤者是張志新(化名)和其女友劉穎领追,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體响逢,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡绒窑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了龄句。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片回论。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖分歇,靈堂內(nèi)的尸體忽然破棺而出傀蓉,到底是詐尸還是另有隱情,我是刑警寧澤职抡,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布葬燎,位于F島的核電站,受9級特大地震影響缚甩,放射性物質(zhì)發(fā)生泄漏谱净。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一擅威、第九天 我趴在偏房一處隱蔽的房頂上張望壕探。 院中可真熱鬧,春花似錦郊丛、人聲如沸李请。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽导盅。三九已至较幌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間白翻,已是汗流浹背乍炉。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滤馍,地道東北人岛琼。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像纪蜒,于是被迫代替她去往敵國和親衷恭。 傳聞我的和親對象是個殘疾皇子此叠,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1.1 spring IoC容器和beans的簡介 Spring 框架的最核心基礎的功能是IoC(控制反轉(zhuǎn))容器纯续,...
    simoscode閱讀 6,702評論 2 22
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)灭袁,斷路器猬错,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 伊川王利珍堅持原創(chuàng)分享第548天 今天晚上的約練更像一次訪談。因為沒有約到第三位老師茸歧,前半段我們就聊一些孩子教育的...
    宛如初夏閱讀 216評論 0 0
  • 金風玉露倦炒,雕車銀樹∪硐梗花市賞燈小路逢唤。 昏黃搖映醉佳人,只一瞬涤浇、癡心已付鳖藕。 黛眉輕蹙,清眸盼顧只锭,勝卻秋風幾度著恩。 多情應...
    當初不該下凡閱讀 521評論 4 4
  • 我輕言道:這一世,你休想再逃蜻展。
    卡布奇諾zxb0815閱讀 99評論 0 0