搞不清楚类之间的关系?还有这个工具

2023-11-10 03:59

本文主要是介绍搞不清楚类之间的关系?还有这个工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

当你在阅读源码的时候,看到那些继承来实现去的各种类和接口,是不是已经不知道他的爸爸(父类)是谁,他的爷爷(父类的父类)是谁,只知道他的祖宗是谁(Object类)?毕竟类之间的关系太说不清道不明,只能说一句"贵圈真乱"

没关系,Idea有一个超级强大并且非常实用的东西,可以让你一下子就搞清楚他们之间那些,轻松搞定他们之间的关系,毕竟谁也不想喜当爹,"我怎么突然多了一个内部类,他是不是我的内部类"。看看接口那么绿就知道,他自己有多少孩子都不知道

多的不说了,先看效果图:这个主题的风格真的对我的胃口(极客的感觉),Idea的主题风格都是比较好看的


所有文章同步更新与Github--Java-Notes,想了解JVM(基本更完),HashMap源码分析,spring相关,并发,剑指offer题解(Java版),可以点个star。可以看我的github主页,每天都在更新哟(自从上班,每天都是晚上写到12点多,早上6点多起来码字,每天的动力就是看这star数往上涨)。

邀请您跟我一同完成 repo


线代表的含义

  • 蓝色实线 --> 继承

  • 绿色虚线 --> 实现

  • 红色实现 --> 内部类

我们以 ReentrantLock 举例


原谅色

我们看他实现了 Lock和Serializable 接口,所以类图关系上展示的就是绿色的虚线 接口根本不知道自己有多少个孩子(实现类),当真原谅色

红色

我们看到,Sync这个抽象类是 ReentrantLock类的内部类,我们再看类图关系中,他就是用红色线表示关系

不信我们再看看另一个类 AbstractQueuedSynchronizer

蓝色

Sync 继承自AbstractQueuedSynchronizer,并且所有的类(除了Object),都继承自Object,所以所有的类的蓝色线都会指向Object

怎么搞出来?

选中类,右键

两种模式

  • 第一个就是我一开始展现的那种,他会单独在另一个窗口打开

  • 第二个他会直接在类的旁边弹出一个窗口,显示关系

我们主要以第一个为例展示,怎么一步步展现出那么多类,找出他的那么多父亲、叔叔,爷爷,还有祖宗

找出他的隐藏亲戚

我们一进去是这样的,并不是我开头的那样,各种说不清的父亲叔叔,因为它一开始只显示直接父类和实现的接口

先找他的父亲

ReentrantLock 是一个富二代,他没有爷爷,祖宗,只有一个爸爸。因为他没有继承除了Object之外的类

找他的养子(内部类,不是继承自他的)

过滤、筛选

连找两下Sync的父类

进入源码

这样就可以直接跳转进源码


添加其他类

有的时候你觉得这个类不是你想要的,你还要横向对比,找出他的叔叔(爷爷相同,但是没有直接的继承关系)或者兄弟姐妹(父亲相同的类)

你可以直接右键选择这个

然后输入你想添加的类,比如Thread类

然后就会添加进来,如果他们两个没有关系(如果是类都会有关系,毕竟都继承自Object,但是如果父类没有加载出来,就认为没有关系),那么就不会有连线,比如我们删除Object类

最后

有了这样的东西,我想你不论是阅读源码还是做什么,你应该都不会搞不清楚类和类/(接口)之间的关系了

祝大家都能开开心心的阅读源码,解读他们之间的关系

作者:叫我刘三青
链接:https://juejin.im/post/5d3bae056fb9a07eb74b8523
来源:掘金


这篇关于搞不清楚类之间的关系?还有这个工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/380279

相关文章

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim