IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南

IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南

什么是 Type Hierarchy?

Type Hierarchy 是 IntelliJ IDEA 提供的一个工具,允许开发者查看某个类的继承关系及其实现的接口结构。它是理解类关系的重要工具,尤其在处理复杂的继承体系时非常有用。

在 IDEA 中,默认的快捷键是 Ctrl+H(Windows 系统)。如果你自定义了快捷键,请按照你的配置来操作。

例如,当我们想查看 Exception 类的继承关系时,Type Hierarchy 会展示其完整的继承链。但是,由于 Exception 下的子类非常多,展示结果可能会显得混乱且难以聚焦。如果只想查看 java 包及其子包中的类,该怎么办呢?

image-20250114101109944

自定义 Type Hierarchy 的 Scope

为了更高效地使用 Type Hierarchy,我们可以自定义其显示范围。通过自定义 Scope,可以过滤出特定包中的类,减少不必要的干扰。

1. 打开 Scope 设置

image-20250114101201941
在 Type Hierarchy 窗口顶部,你会看到一个 Scope(范围)选择器,点击下拉菜单,选择 Edit Scopes(编辑范围)

2. 添加新的 Scope

image-20250114101346015

  1. 点击左上角的 “+” 按钮,选择 Local(本地)Shared(共享) 创建一个新的 Scope。
  2. 输入一个易于识别的名称,例如 Java 包
  3. 在右侧输入框中,填写匹配规则(Pattern)。
    • 如果需要匹配 java 包及其所有子包,正确的 Pattern 是:
      lib:java..*
      
    • lib: 用于匹配标准库或依赖包。
    • ..* 是递归匹配子包的语法。
  4. 勾选 Include Recursively(递归包含),确保子包也被包含。
  5. 点击 Apply(应用) 保存设置。

示例:查看自定义 Scope 的效果

完成上述设置后,当你重新打开 Type Hierarchy 窗口并选择刚才创建的 Scope(例如 Java 包),将看到以下效果:

  • 仅显示 java 包及其子包 中的类。
  • 忽略其他第三方库或项目中的类。
  • 更加清晰地展示核心库的继承关系。

例如,查看 Exception 类的 Type Hierarchy 时,只会显示 java 包中的子类,而不会显示外部依赖中的类。

image-20250114101615068

Scope Pattern 的语法详解

在 Scope 设置中,Pattern 的用法决定了匹配范围的灵活性。以下是一些常用语法及其说明:

基本语法

  1. 匹配指定包及其所有子包

    lib:java..*
    
    • lib: 指定范围为库中的类。
    • ..* 用于递归匹配包及其所有子包。
  2. 匹配单个类

    java.util.ArrayList
    
    • 精确匹配 ArrayList 类。
  3. 排除特定包或类

    !lib:com.example..*
    
    • ! 表示排除特定包。
    • 例如,上述规则会排除 com.example 包及其子包。
  4. 匹配多个包

    lib:java..* || lib:javax..*
    
    • 使用逻辑 OR || 连接多个包规则。
    • 上述规则匹配 java 包及 javax 包的所有类。

注意事项

  1. lib: 的重要性:如果省略 lib:,IDEA 可能无法识别项目中的标准库或依赖包。
  2. 递归匹配的语法:必须使用 ..* 来递归匹配子包,而不是单纯的 .*
  3. Scope 名称的规范性:建议根据用途命名 Scope,便于快速识别,例如 Java 核心包第三方依赖包

常见包

java标准库及其相关包

java 核心包

lib:java..*

javax 包(扩展包)

lib:javax..*

jdk 内部工具包

(如sun包和工具类):

lib:sun..*

第三方库

以下是一些常见的 Java 第三方库的匹配模式:

(1)Spring Framework

  • Spring 核心包:

    lib:org.springframework..*
    
  • Spring Boot 相关包:

    lib:org.springframework.boot..*
    

(2)Apache Commons 系列

  • Commons Lang 工具包:

    lib:org.apache.commons.lang3..*
    
  • Commons IO:

    lib:org.apache.commons.io..*
    

(3)Google 常见库

  • Guava 工具包:

    lib:com.google.common..*
    
  • Gson JSON 序列化工具:

    lib:com.google.gson..*
    

(4)Lombok

  • Lombok 注解包:

    lib:lombok..*
    

总结

通过自定义 Scope,Type Hierarchy 工具变得更加高效,可以帮助开发者专注于关注的范围。无论是分析 java 包的类继承结构,还是过滤掉无关的第三方依赖,自定义 Scope 都是一个不可或缺的利器。

希望本指南能帮助你更好地掌握 IntelliJ IDEA 中 Type Hierarchy 的使用技巧,让你的开发效率更上一层楼!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式ID的实现方案

1. 什么是分布式ID ​ 对于低访问量的系统来说,无需对数据库进行分库分表,单库单表完全可以应对,但是随着系统访问量的上升,单表单库的访问压力逐渐增大,这时候就需要采用分库分表的方案,来缓解压力。 ​…

Python爬虫-汽车之家各车系周销量榜数据

前言 本文是该专栏的第43篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者在文章《Python爬虫-汽车之家各车系月销量榜数据》中,有详细介绍,如何爬取“各车系车型的月销量榜单数据”的方法以及完整代码教学教程。 而本文,笔者同样以汽车之家平台为例,…

Unity-Mirror网络框架-从入门到精通之RigidbodyBenchmark示例

文章目录 前言示例代码逻辑测试结论性能影响因素最后前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计,它…

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…

Linux简介和环境搭建

Linux 介绍和环境搭建 1、发行版本 Linux 操作系统有多个主流发行版本,每个版本根据不同的目标、特点和使用场景为用户提供了不同的功能和体验。 Ubuntu • 特点:Ubuntu 是最为人熟知的 Linux 发行版之一,强调易用性和用户友好性&#xff…

代码随想录刷题day07|(数组篇)58.区间和

目录 一、数组理论基础 二、前缀和 三、相关算法题目 四、总结 五、待解决问题 一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 代码随想录 (programmercarl.com) 特点: 1.下标从0开始,内存中地址空间是连续的 2.查询快&…

多模态论文笔记——CLIP

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:CLIP。 文章目录 CLIP(Contrastive Language-Image Pre-training&#xff09…

【论文笔记】SmileSplat:稀疏视角+pose-free+泛化

还是一篇基于dust3r的稀疏视角重建工作,作者联合优化了相机内外参与GS模型,实验结果表明优于noposplat。 abstract 在本文中,提出了一种新颖的可泛化高斯方法 SmileSplat,可以对无约束(未标定相机的)稀疏多…

Linux学习day2

经过上次我们完成了linux云服务器的安装,今天我们学习一些linux基本指令,是我们使用linux系统的基础 思考:输入指令,让操作系统执行,其实是在做什么呢? Linux环境中,做类似于windows的操作。l…

给DevOps加点料:融入安全性的DevSecOps

从前,安全防护只是特定团队的责任,在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时,这样做没什么问题;但是现在,这种做法现在已经行不通了。 采用 DevOps 可以有效推进快速频繁的开发周期(有时…

【2024年华为OD机试】 (B卷,100分)- 座位调整(Java JS PythonC/C++)

一、问题描述 题目描述 疫情期间课堂的座位进行了特殊的调整,不能出现两个同学紧挨着,必须隔至少一个空位。 给你一个整数数组 desk 表示当前座位的占座情况,由若干 0 和 1 组成,其中 0 表示没有占位,1 表示占位。 …

提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息

网络和IP地址计算器 https://www.sojson.com/convert/subnetmask.html提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息。 子网掩码转换 子网掩码 /26 的含义二进制表示:/26 表示前 26 位是网络部分,剩下的 6 位是主机部分。对应的子网掩码为 255…

IMX6U Qt 开发环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、交叉编译 1. 安装通用 ARM 交叉编译工具链 2. 安装 Poky 交叉编译工具链 二、编译出厂源码 1. U-boot 2. 内核和模块 3. 编译出厂 Qt GUI 综合 Demo 前言…

【2024年华为OD机试】(B卷,100分)- 找终点 (Java JS PythonC/C++)

一、问题描述 题目描述 给定一个正整数数组&#xff0c;设为 nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始&#xff0c;正好走到数组最后一个成员&#xff0c;所使用的最少步骤数。 要求&#xff1a; 第一步必须从第一元素开始&#xff0c;且 1<第一…

RabbitMQ-集群

RabbitMQ集群----主备关系&#xff0c;在运行的时候&#xff0c;如果非主要节点宕机&#xff0c;程序操作 不受影响&#xff1b; 如果主节点宕机了&#xff0c; 程序会中断操作。 而Rabbitmq集群&#xff0c;会马上让没有宕机的节点参选&#xff0c;选出新的主要节点。 程序重试…

postgresql分区表相关问题处理

1.使用pg_cron按日创建分区表&#xff0c;会出现所在数据库对应用户权限不足的问题。 原因是pg_cron运行在postgres数据库中&#xff0c;是用superuser进行执行的&#xff0c;对应的分区表的owner为postgres&#xff0c;所以需要单独授权对表的所有操作权限。不知道直接改变ow…

网络数据链路层以太网协议

网络数据链路层以太网协议 1. 以太网协议介绍 以太网是一个数据链路层协议&#xff0c;数据链路层的作用是用于两个设备&#xff08;同一种数据链路节点&#xff09;之间进行传递。 以太网不是一种具体的网络&#xff0c;而是一种网络技术标准&#xff0c;既包含了数据链路层…

Kotlin 循环语句详解

文章目录 循环类别for-in 循环区间整数区间示例1&#xff1a;正向遍历示例2&#xff1a;反向遍历 示例1&#xff1a;遍历数组示例2&#xff1a;遍历区间示例3&#xff1a;遍历字符串示例4&#xff1a;带索引遍历 while 循环示例&#xff1a;计算阶乘 do-while 循环示例&#xf…

【STM32】HAL库USB实现软件升级DFU的功能操作及配置

【STM32】HAL库USB实现软件升级DFU的功能操作及配置 文章目录 DFUHAL库的DFU配置修改代码添加条件判断和跳转代码段DFU烧录附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏…

使用WebdriverIO和Appium测试App

1.新建项目 打开Webstorm新建项目 打开终端输入命令 npm init -y npm install wdio/cli allure-commandline --save-dev npx wdio config 然后在终端依次选择如下&#xff1a; 然后在终端输入命令&#xff1a; npm install wdio/local-runnerlatest wdio/mocha-frameworkla…