★★★建议星标我们★★★
Java进阶架构师★“星标”!这样才不会错过每日进阶架构文章呀。
![670614aa9e2085a3ca06ca46820276cf.png](https://img-blog.csdnimg.cn/img_convert/670614aa9e2085a3ca06ca46820276cf.png)
![5dbf23d2532b1bf08709449853c1096d.png](https://img-blog.csdnimg.cn/img_convert/5dbf23d2532b1bf08709449853c1096d.png)
2020年Java原创面试题库连载中
【000期】Java最全面试题库思维导图
【001期】JavaSE面试题(一):面向对象
【002期】JavaSE面试题(二):基本数据类型与访问修饰符
【003期】JavaSE面试题(三):JavaSE语法(1)
【004期】JavaSE面试题(四):JavaSE语法(3)
【005期】JavaSE面试题(五):String类
【006期】JavaSE面试题(六):泛型
【007期】JavaSE面试题(七):异常
【008期】JavaSE面试题(八):集合之List
【009期】JavaSE面试题(九):集合之Set
【010期】JavaSE面试题(十):集合之Map
【011期】JavaSE面试题(十一):多线程(1)
【012期】JavaSE面试题(十二):多线程(2)
【013期】JavaSE面试题(十三):多线程(3)
【014期】JavaSE面试题(十四):基本IO流
【015期】JavaSE面试题(十五):网络IO流
【016期】JavaSE面试题(十六):反射
【017期】JavaSE面试题(十七):JVM之内存模型
【018期】JavaSE面试题(十八):JVM之垃圾回收
【020期】JavaSE系列面试题汇总(共18篇)
【019期】JavaWeb面试题(一):JDBC
【021期】JavaWeb面试题(二):HTTP协议
【022期】JavaWeb面试题(三):Cookie和Session
【023期】JavaWeb面试题(四):JSP
【024期】JavaWeb面试题(五):Filter和Listener
【025期】Java工具面试题(一):版本控制工具
【026期】Java工具面试题(二):项目管理工具
【027期】Java设计模式面试题
【028期】JavaWeb系列面试题汇总(共10篇)
【029期】JavaEE面试题(一)Web应用服务器
【030期】JavaEE面试题(二)SpringMVC
【031期】JavaEE面试题(三)Spring(1)
【032期】JavaEE面试题(四)Spring(2)
【033期】JaveEE面试题(五)MyBatis
【034期】JavaEE面试题(六)Hibernate
【035期】JavaEE面试题(七)SpringBoot(1)
更多内容,点击上面蓝字查看
![5dbf23d2532b1bf08709449853c1096d.png](https://img-blog.csdnimg.cn/img_convert/5dbf23d2532b1bf08709449853c1096d.png)
最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟。
这次利用了IDEA的diagram,结果一目了然,也是好用到炸裂,就此分享。
查看图形形式的继承链
在你想查看的类的标签页内,点击右键,选择 Diagrams,其中有 show 和 show ... Popup,只是前者新建在标签页内,后者以浮窗的形式展示:
![409d17149c035e232096ef793d68468e.png](https://img-blog.csdnimg.cn/img_convert/409d17149c035e232096ef793d68468e.png)
实际上,你也可以从左边的项目目录树中,对你想查看的类点击右键,同样选择Diagrams,效果是一样的:
![d3341c943243d893cebb218c6f14690b.png](https://img-blog.csdnimg.cn/img_convert/d3341c943243d893cebb218c6f14690b.png)
然后你就会得到如下图所示的继承关系图形,以自定义的Servlet为例:
![fa6fb0ab990a92faf2d4dac606f4b09c.png](https://img-blog.csdnimg.cn/img_convert/fa6fb0ab990a92faf2d4dac606f4b09c.png)
显而易见的是:
蓝色实线箭头是指继承关系
绿色虚线箭头是指接口实现关系
优化继承链图形,想我所想
1 去掉不关心的类
得到的继承关系图形,有些并不是我们想去了解的,比如上图的Object和Serializable,我们只想关心Servlet重要的那几个继承关系,怎么办?
简单,删掉。点击选择你想要删除的类,然后直接使用键盘上的delete键就行了。清理其他类的关系后图形如下:
![4c316df27f9b6aa1ebeb957e90d5e59f.png](https://img-blog.csdnimg.cn/img_convert/4c316df27f9b6aa1ebeb957e90d5e59f.png)
2 展示类的详细信息
有人说,诶,这怎么够呢,那继承下来的那些方法我也想看啊?简单,IDEA通通满足你。
在页面点击右键,选择 show categories,根据需要可以展开类中的属性、方法、构造方法等等。当然,第二种方法也可以直接使用上面的工具栏:
![0b8e538ebfd7be5843a5e05d47fc8fe5.png](https://img-blog.csdnimg.cn/img_convert/0b8e538ebfd7be5843a5e05d47fc8fe5.png)
然后你就会得到:
![0e8cba2b3373efeb8853af9b17072508.png](https://img-blog.csdnimg.cn/img_convert/0e8cba2b3373efeb8853af9b17072508.png)
什么,方法里你还想筛选,比如说想看protected权限及以上范围的?简单,右键选择 Change Visibility Level,根据需要调整即可。
什么,你嫌图形太小你看不清楚?IDEA也可以满足你,按住键盘的Alt,竟然出现了放大镜,惊不惊喜,意不意外?
![9cf7799c5d7dacee9ddc3586f266cea7.png](https://img-blog.csdnimg.cn/img_convert/9cf7799c5d7dacee9ddc3586f266cea7.png)
3 加入其他类到关系中来
当我们还需要查看其他类和当前类是否有继承上的关系的时候,我们可以选择加其加入到当前的继承关系图形中来。
在页面点击右键,选择 Add Class to Diagram,然后输入你想加入的类就可以了:
![91668e4ddf18b6073b74e3265142696e.png](https://img-blog.csdnimg.cn/img_convert/91668e4ddf18b6073b74e3265142696e.png)
例如我们添加了一个Student类,如下图所示。好吧,并没有任何箭头,看来它和当前这几个类以及接口并没有发生什么不可描述的关系:
![c3aa59193b4c056bab4c8a2feaedede6.png](https://img-blog.csdnimg.cn/img_convert/c3aa59193b4c056bab4c8a2feaedede6.png)
4 查看具体代码
如果你想查看某个类中,比如某个方法的具体源码,当然,不可能给你展现在图形上了,不然屏幕还不得撑炸?
但是可以利用图形,或者配合IDEA的structure方便快捷地进入某个类的源码进行查看。
双击某个类后,你就可以在其下的方法列表中游走,对于你想查看的方法,选中后点击右键,选择 Jump to Source:
![4284d8d25b2372916d26b0e2bd11ea8f.png](https://img-blog.csdnimg.cn/img_convert/4284d8d25b2372916d26b0e2bd11ea8f.png)
![22d5bd90f2c87b92805084376b84e4fd.png](https://img-blog.csdnimg.cn/img_convert/22d5bd90f2c87b92805084376b84e4fd.png)
在进入某个类后,如果还想快速地查看该类的其他方法,还可以利用IDEA提供的structure功能:
![3cf65c1b23a9bdffa0004651072aab70.png](https://img-blog.csdnimg.cn/img_convert/3cf65c1b23a9bdffa0004651072aab70.png)
选择左侧栏的structure之后,如上图左侧会展示该类中的所有方法,点击哪个方法,页面内容就会跳转到该方法部分去。
最后
用上面提到的的IDEA这些功能,学习和查看类关系,了解诸如主流框架源码之类的东西,可以说是非常舒服了。