搞不清楚類之間的關係?還有這個工具

前言

當你在閱讀源碼的時候,看到那些繼承來實現去的各類類和接口,是否是已經不知道他的爸爸(父類)是誰,他的爺爺(父類的父類)是誰,只知道他的祖宗是誰(Object類)?畢竟類之間的關係太說不清道不明,只能說一句"貴圈真亂"git

不要緊,Idea有一個超級強大而且很是實用的東西,可讓你一會兒就搞清楚他們之間那些,輕鬆搞定他們之間的關係,畢竟誰也不想喜當爹,"我怎麼忽然多了一個內部類,他是否是個人內部類"。看看接口那麼綠就知道,他本身有多少孩子都不知道github

多的不說了,先看效果圖:這個主題的風格真的對個人胃口(極客的感受),Idea的主題風格都是比較好看的spring


全部文章同步更新與Github--Java-Notes,想了解JVM(基本更完),HashMap源碼分析,spring相關,併發,劍指offer題解(Java版),能夠點個star。能夠看個人github主頁,天天都在更新喲(自從上班,天天都是晚上寫到12點多,早上6點多起來碼字,天天的動力就是看這star數往上漲)。併發

邀請您跟我一同完成 repo源碼分析


線表明的含義

藍色實線 --> 繼承3d

綠色虛線 --> 實現cdn

紅色實現 --> 內部類blog

咱們以 ReentrantLock 舉例繼承

原諒色

咱們看他實現了 Lock和Serializable 接口,因此類圖關係上展現的就是綠色的虛線 接口根本不知道本身有多少個孩子(實現類),當真原諒色接口

紅色

咱們看到,Sync這個抽象類是 ReentrantLock類的內部類,咱們再看類圖關係中,他就是用紅色線表示關係

不信咱們再看看另外一個類 AbstractQueuedSynchronizer

藍色

Sync 繼承自AbstractQueuedSynchronizer,而且全部的類(除了Object),都繼承自Object,因此全部的類的藍色線都會指向Object

怎麼搞出來

選中類,右鍵

兩種模式

  • 第一個就是我一開始展示的那種,他會單獨在另外一個窗口打開
  • 第二個他會直接在類的旁邊彈出一個窗口,顯示關係

咱們主要以第一個爲例展現,怎麼一步步展示出那麼多類,找出他的那麼多父親、叔叔,爺爺,還有祖宗

找出他的隱藏親戚

咱們一進去是這樣的,並非我開頭的那樣,各類說不清的父親叔叔,由於它一開始只顯示直接父類和實現的接口

先找他的父親

ReentrantLock 是一個富二代,他沒有爺爺,祖宗,只有一個爸爸。由於他沒有繼承除了Object以外的類

找他的養子(內部類,不是繼承自他的)

過濾、篩選

連找兩下Sync的父類

進入源碼

這樣就能夠直接跳轉進源碼

添加其餘類

有的時候你以爲這個類不是你想要的,你還要橫向對比,找出他的叔叔(爺爺相同,可是沒有直接的繼承關係)或者兄弟姐妹(父親相同的類)

你能夠直接右鍵選擇這個

而後輸入你想添加的類,好比Thread類

而後就會添加進來,若是他們兩個沒有關係(若是是類都會有關係,畢竟都繼承自Object,可是若是父類沒有加載出來,就認爲沒有關係),那麼就不會有連線,好比咱們刪除Object類

最後

有了這樣的東西,我想你不管是閱讀源碼仍是作什麼,你應該都不會搞不清楚類和類/(接口)之間的關係了

祝你們都能開開心心的閱讀源碼,解讀他們之間的關係

相關文章
相關標籤/搜索