idea的navigate(導(dǎo)航) 包含 Back(Alt+左右箭頭)? declaration f3?? implementations ctrl+T??? Type Hierarchy f4
call hierarchy ctrl + alt + H? ? ? method hierarchy f4? ? next method? ctrl+shift+向下上箭頭 file path ctrl+alt+f12
analyze data flow to here?? analyze data flow from here
1漠趁、查看圖形形式的繼承鏈
在你想查看的類(lèi)的標(biāo)簽頁(yè)內(nèi),點(diǎn)擊右鍵,選擇 Diagrams,其中有 show 和 show ... Popup,只是前者新建在標(biāo)簽頁(yè)內(nèi)广辰,后者以浮窗的形式展示:
實(shí)際上,你也可以從左邊的項(xiàng)目目錄樹(shù)中,對(duì)你想查看的類(lèi)點(diǎn)擊右鍵翩活,同樣選擇Diagrams,效果是一樣的:
然后你就會(huì)得到如下圖所示的繼承關(guān)系圖形便贵,以自定義的Servlet為例:
顯而易見(jiàn)的是:
綠色的表示接口? 藍(lán)色的表示類(lèi)??? 實(shí)現(xiàn)表示繼承? 虛線表示實(shí)現(xiàn)? 有藍(lán)色有綠色的類(lèi)是抽象類(lèi) 藍(lán)色的為普通類(lèi)?? 有缺口的m為抽象方法 有灰色標(biāo)記的為static方法
藍(lán)色實(shí)線箭頭是指繼承關(guān)系
綠色虛線箭頭是指接口實(shí)現(xiàn)關(guān)系
2菠镇、優(yōu)化繼承鏈圖形,想我所想
2.1 去掉不關(guān)心的類(lèi)
得到的繼承關(guān)系圖形承璃,有些并不是我們想去了解的利耍,比如上圖的Object和Serializable,我們只想關(guān)心Servlet重要的那幾個(gè)繼承關(guān)系,怎么辦隘梨?
簡(jiǎn)單程癌,刪掉。點(diǎn)擊選擇你想要?jiǎng)h除的類(lèi)轴猎,然后直接使用鍵盤(pán)上的delete鍵就行了嵌莉。清理其他類(lèi)的關(guān)系后圖形如下:
2.2 展示類(lèi)的詳細(xì)信息
有人說(shuō),誒捻脖,這怎么夠呢锐峭,那繼承下來(lái)的那些方法我也想看啊可婶?簡(jiǎn)單沿癞,IDEA通通滿(mǎn)足你。
在頁(yè)面點(diǎn)擊右鍵矛渴,選擇 show categories椎扬,根據(jù)需要可以展開(kāi)類(lèi)中的屬性、方法曙旭、構(gòu)造方法等等盗舰。當(dāng)然,第二種方法也可以直接使用上面的工具欄:
然后你就會(huì)得到:
什么桂躏,方法里你還想篩選钻趋,比如說(shuō)想看protected權(quán)限及以上范圍的?簡(jiǎn)單剂习,右鍵選擇 Change Visibility Level蛮位,根據(jù)需要調(diào)整即可。
什么鳞绕,你嫌圖形太小你看不清楚失仁?IDEA也可以滿(mǎn)足你,按住鍵盤(pán)的Alt们何,竟然出現(xiàn)了放大鏡萄焦,驚不驚喜,意不意外冤竹?
2.3 加入其他類(lèi)到關(guān)系中來(lái)
當(dāng)我們還需要查看其他類(lèi)和當(dāng)前類(lèi)是否有繼承上的關(guān)系的時(shí)候拂封,我們可以選擇加其加入到當(dāng)前的繼承關(guān)系圖形中來(lái)。
在頁(yè)面點(diǎn)擊右鍵鹦蠕,選擇 Add Class to Diagram冒签,然后輸入你想加入的類(lèi)就可以了:(也可以通過(guò)直接拖拽的形式)
例如我們添加了一個(gè)Student類(lèi),如下圖所示钟病。好吧萧恕,并沒(méi)有任何箭頭刚梭,看來(lái)它和當(dāng)前這幾個(gè)類(lèi)以及接口并沒(méi)有發(fā)生什么不可描述的關(guān)系:
2.4 查看具體代碼
如果你想查看某個(gè)類(lèi)中,比如某個(gè)方法的具體源碼票唆,當(dāng)然朴读,不可能給你展現(xiàn)在圖形上了,不然屏幕還不得撐炸惰说?
但是可以利用圖形磨德,或者配合IDEA的structure方便快捷地進(jìn)入某個(gè)類(lèi)的源碼進(jìn)行查看缘回。
雙擊某個(gè)類(lèi)后吆视,你就可以在其下的方法列表中游走,對(duì)于你想查看的方法酥宴,選中后點(diǎn)擊右鍵啦吧,選擇 Jump to Source:
在進(jìn)入某個(gè)類(lèi)后,如果還想快速地查看該類(lèi)的其他方法拙寡,還可以利用IDEA提供的structure功能:
選擇左側(cè)欄的structure之后授滓,如上圖左側(cè)會(huì)展示該類(lèi)中的所有方法,點(diǎn)擊哪個(gè)方法肆糕,頁(yè)面內(nèi)容就會(huì)跳轉(zhuǎn)到該方法部分去般堆。
Eclipse的"Call Hierarchy"可以查看一個(gè)Java方法或類(lèi)成員變量的調(diào)用樹(shù)(caller和callee兩個(gè)方向),非常方便诚啃。
在IDEA中類(lèi)似功能被劃分到了三個(gè)命令淮摔。
IntelliJ IDEA中可以在主菜單中選擇Navigate | Call Hierarchy命令查看一個(gè)Java方法調(diào)用樹(shù)(caller和callee兩個(gè)方向),但是不像Eclipse那樣可以查看類(lèi)成員變量的調(diào)用樹(shù)始赎。
如下圖和橙,左上角的兩個(gè)按鈕是調(diào)用和被調(diào)用關(guān)系的顯示。
IntelliJ IDEA中可以在主菜單中選擇Analyze | Dataflow from/to Here兩個(gè)命令查看表達(dá)式造垛、變量和方法參數(shù)的傳遞關(guān)系樹(shù)魔招。
Analyze | Data Flow? to Here
Analyze | Data Flow? from Here
IntelliJ IDEA的"Find Usage"可以查看一個(gè)Java類(lèi)、方法或變量的直接使用情況五辽。