當你在閱讀源碼的時候,看到那些繼承來實現去的各類類和接口,是否是已經不知道他的爸爸(父類)是誰,他的爺爺(父類的父類)是誰,只知道他的祖宗是誰(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以外的類
這樣就能夠直接跳轉進源碼
有的時候你以爲這個類不是你想要的,你還要橫向對比,找出他的叔叔(爺爺相同,可是沒有直接的繼承關係)或者兄弟姐妹(父親相同的類)
你能夠直接右鍵選擇這個
而後輸入你想添加的類,好比Thread類
而後就會添加進來,若是他們兩個沒有關係(若是是類都會有關係,畢竟都繼承自Object,可是若是父類沒有加載出來,就認爲沒有關係),那麼就不會有連線,好比咱們刪除Object類
有了這樣的東西,我想你不管是閱讀源碼仍是作什麼,你應該都不會搞不清楚類和類/(接口)之間的關係了
祝你們都能開開心心的閱讀源碼,解讀他們之間的關係