11.4 總結(jié)

11.4 總結(jié)

利用RTTI可根據(jù)一個匿名的基礎(chǔ)類句柄調(diào)查出類型信息课锌。但正是由于這個原因,新手們極易誤用它祈秕,因為有些時候多形性方法便足夠了渺贤。對那些以前習慣程序化編程的人來說雏胃,極易將他們的程序組織成一系列switch語句。他們可能用RTTI做到這一點癣亚,從而在代碼開發(fā)和維護中損失多形性技術(shù)的重要價值丑掺。Java的要求是讓我們盡可能地采用多形性,只有在極特別的情況下才使用RTTI述雾。
但為了利用多形性街州,要求我們擁有對基礎(chǔ)類定義的控制權(quán),因為有些時候在程序范圍之內(nèi)玻孟,可能發(fā)現(xiàn)基礎(chǔ)類并未包括我們想要的方法唆缴。若基礎(chǔ)類來自一個庫,或者由別的什么東西控制著黍翎,RTTI便是一種很好的解決方案:可繼承一個新類型面徽,然后添加自己的額外方法。在代碼的其他地方匣掸,可以偵測自己的特定類型趟紊,并調(diào)用那個特殊的方法。這樣做不會破壞多形性以及程序的擴展能力碰酝,因為新類型的添加不要求查找程序中的switch語句霎匈。但在需要新特性的主體中添加新代碼時,就必須用RTTI偵測自己特定的類型送爸。

從某個特定類的利益的角度出發(fā)铛嘱,在基礎(chǔ)類里加入一個特性后,可能意味著從那個基礎(chǔ)類衍生的其他所有類都必須獲得一些無意義的“雞肋”袭厂。這使得接口變得含義模糊墨吓。若有人從那個基礎(chǔ)類繼承,且必須覆蓋抽象方法纹磺,這一現(xiàn)象便會使他們陷入困擾帖烘。比如現(xiàn)在用一個類結(jié)構(gòu)來表示樂器(Instrument)。假定我們想清潔管弦樂隊中所有適當樂器的通氣音栓(Spit Valve)橄杨,此時的一個辦法是在基礎(chǔ)類Instrument中置入一個ClearSpitValve()方法秘症。但這樣做會造成一個誤區(qū),因為它暗示著打擊樂器和電子樂器中也有音栓讥珍。針對這種情況历极,RTTI提供了一個更合理的解決方案窄瘟,可將方法置入特定的類中(此時是Wind衷佃,即“通氣口”)——這樣做是可行的。但事實上一種更合理的方案是將prepareInstrument()置入基礎(chǔ)類中蹄葱。初學者剛開始時往往看不到這一點氏义,一般會認定自己必須使用RTTI锄列。

最后,RTTI有時能解決效率問題惯悠。若代碼大量運用了多形性邻邮,但其中的一個對象在執(zhí)行效率上很有問題,便可用RTTI找出那個類型克婶,然后寫一段適當?shù)拇a筒严,改進其效率。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末情萤,一起剝皮案震驚了整個濱河市鸭蛙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筋岛,老刑警劉巖娶视,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異睁宰,居然都是意外死亡肪获,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門柒傻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孝赫,“玉大人,你說我怎么就攤上這事诅愚『” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵违孝,是天一觀的道長刹前。 經(jīng)常有香客問我,道長雌桑,這世上最難降的妖魔是什么喇喉? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮校坑,結(jié)果婚禮上拣技,老公的妹妹穿的比我還像新娘。我一直安慰自己耍目,他們只是感情好膏斤,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邪驮,像睡著了一般莫辨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天沮榜,我揣著相機與錄音盘榨,去河邊找鬼。 笑死蟆融,一個胖子當著我的面吹牛草巡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播型酥,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼山憨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弥喉?” 一聲冷哼從身側(cè)響起萍歉,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎档桃,沒想到半個月后枪孩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡藻肄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年蔑舞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘹屯。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡攻询,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出州弟,到底是詐尸還是另有隱情钧栖,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布婆翔,位于F島的核電站拯杠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏啃奴。R本人自食惡果不足惜潭陪,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望最蕾。 院中可真熱鬧依溯,春花似錦、人聲如沸瘟则。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醋拧。三九已至慷嗜,卻和暖如春宿百,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洪添。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雀费,地道東北人干奢。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像盏袄,于是被迫代替她去往敵國和親忿峻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

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

  • 今天來參加組會辕羽,抱著期待逛尚,來到這里,可后面給我的感受是只是來吃吃喝喝刁愿,讓我有失落绰寞,一直想著要引發(fā)大家互相坦誠去支持...
    Hi_張閱讀 199評論 0 0
  • 周末是出門游玩的日子,既能夠去參觀垃圾處理場铣口,又可以和小朋友們一起玩兒滤钱,但是,因為家里有事走不開脑题,可憐的爸爸就只好...
    元元圈閱讀 251評論 0 0
  • 起英文名字我一直認為我們是快時尚品牌件缸,所以起英文名字會更時髦,更貼近我們的品牌叔遂,今日得到才明白他炊,英文名字其實...
    伊森田慧慧閱讀 142評論 0 0
  • 今天劉潤5分鐘分享的微信禮儀,其中講到‘你好已艰,在嗎’自己是不喜歡這樣的聊天開場痊末,所以也不會用;其次是笑臉哩掺,我...
    a27dd1e4bb1d閱讀 241評論 0 0
  • 每天利用吃飯時間邊吃邊看《轉(zhuǎn)動歷史的時刻》這事兒已經(jīng)做了好久疮丛,雖然時間有限幔嫂,精力有限。但有一個東東叫做精誠所至誊薄,滴...
    競走的蝸牛閱讀 936評論 0 2