前段时间分享了《阅读跟踪 Java 源码的几个小技巧》是基于 Eclipse 版本的,看大家的留言都是想要 IDEA 版本的源码阅读技巧。

所以,为了满足众多 IDEA 粉丝的要求,栈长我特意做一期 IDEA 版的。

1、定位到方法实现类

public static Object getBean(String name) {
return applicationContext.getBean(name);
}

如以上代码,IDEA 如何跳转到 getBean 方法的实现类?

在 IDEA 中,CTRL + 鼠标左击 默认会跳到方法所在的接口,如 getBean 就会跳到 BeanFactory 接口里面去。

org.springframework.beans.factory.BeanFactory

在 IDEA 中略显麻烦,在引用的方法上 CTRL + ALT + 鼠标左击(B)可以实现跳转至实现类,如果有多个实现类会弹出让你选择。

点击右上角 Open as Tool Window 图标还能展开更多详细。

2、查看类层级关系

到了 BeanFactory 类,在任意地方使用快捷键 CTRL + H 可以打开类的继承层级面板。

或者直接选中 BeanFactory 类名称,再按 CTRL + ALT + 鼠标左击(B),同样可以展示 BeanFactory 类的所有继承类的关系。

还有更屌的!

右键任意类,选择 Diagrams > Show Diagram... 可以打开类的继承图。

看起来有点乱,那是因为我选择了所有实现类展示,实际请合理利用 Show Parents 和 Show Implementations 菜单。

3、查看类结构

如上图所示,IDEA 中也有 Eclipse 中 outline 的面板,叫作:Structure,有了这个面板,可以快速浏览一个类的大纲,也可以快速定位到类的方法、变量等。

也可以使用快捷键 Alt + 7 调出这个面板。

4、源码统计

如图所示,栈长在 IDEA 中装了一个 Statistic 插件,这个插件只支持 JDK 1.8+。

有了这个插件,它可以在项目中按文件类型进行代码的行数、数量、大小统计。这样你就能知道整个源码的总体数量,你也可以把已经阅读的做统计,慢慢实现源码阅读的攻破。

熟练的运用 IDEA 中各个小技巧,让阅读跟踪源码变得更轻松。

更多往期 IDEA 技术文章可以关注Java技术栈微信公众号,在后台回复关键字:IDEA。

Intellij IDEA 阅读源码的 4 个绝技,我必须分享给你!的更多相关文章

  1. 阅读源码的利器——Intellij-IDEA-Replace-in-Path-使用技巧

      前言 讲讲宇宙排名第二的开发工具-–IDEA的使用技巧. 搜索/替换 技巧 阅读源码的利器   1.Match case: 如果勾选该按钮,搜索时将区分大小写字母. 2.Preserve case ...

  2. 【转】使用 vim + ctags + cscope + taglist 阅读源码

    原文网址:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找 ...

  3. Spring源码解析——如何阅读源码(转)

    最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...

  4. Spring源码解析——如何阅读源码

    最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...

  5. 阅读源码(III)

    往期系列: <由阅读源码想到> <由阅读源码想到 | 下篇> Medium上有一篇文章Why You Don't Deserve That Dream Developer Jo ...

  6. 阅读源码(IV)

    往期系列: <由阅读源码想到> <由阅读源码想到 | 下篇> <阅读源码(III)> Eric S.Raymond的写于2014年的<How to learn ...

  7. How Tomcat works — 一、怎样阅读源码

    在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法.一直想阅读一些开源项目,可是没有合适的机会开始.最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的s ...

  8. 使用 vim + ctags + cscope + taglist 阅读源码

    转自:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找到合 ...

  9. 转载~Linux 平台下阅读源码的工具

    Linux 平台下阅读源码的工具 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码在Windows下有sourceinsight这 ...

随机推荐

  1. 你不知道的JavaScript--Item10 闭包(closure)

    JavaScript 闭包究竟是什么? 用JavaScript一年多了,闭包总是让人二丈和尚摸不着头脑.陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是 ...

  2. 32.APP后端处理表情的一些技巧

    app应用中文字夹带表情是个很常见的现象.甚至一些40多岁的大叔级用户,也喜欢在自己的昵称中夹带表情,在产品运营后发现这个现象,彻底颠覆了我的世界观. 在后台处理表情的时间,我遇到过下面3个问题: 1 ...

  3. Offcie2013 无法显示 Aurora解决方法

    问题:安装Office2013和Aurora后,Word菜单栏中无Aurora 原因:aurora安装目录中缺失office.dll,word2013未加载COM文件office.dll和模板文件wo ...

  4. if_else_while_for

    import getpass #标准库里要加密密码需要导包getpass.但是getpass在pycharm中不好用,需要在命令窗口中输入才管用. _username = "abc" ...

  5. SQLServer 数据库重命名

    //SQLServer(将user重命名为us) alter table user rename us;

  6. HTTP 常见状态码解析

    1XX 表示消息 2XX 表示成功 3XX 表示重定向 4XX 表示请求错误 5XX 表示服务器端错误 消息:请求已被接受,需要继续处理.由于 HTTP/1.0 协议中没有定义任何 1xx 状态码. ...

  7. 【缩点+拓扑判链】POJ2762 Going from u to v or from v to u?

    Description In order to make their sons brave, Jiajia and Wind take them to a big cave. The cave has ...

  8. BZOJ_2792_[Poi2012]Well_二分答案

    BZOJ_2792_[Poi2012]Well_二分答案 Description 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某 ...

  9. Hibernate-ORM:05.Hibernate中的list()和iterator()

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- Hibernate中查多条(全部)使用list()或iterator() 本篇介绍: 1.如何使用list() ...

  10. js获取数组中最大值和最小值

    var max = Math.max.apply(null, 数组); 获取最大值 var min = Math.min.apply(null, 数组);获取最小值 一句话获取数组中最大的数,最小数