如何在IntelliJ IDEA中查找Java泛型参数的实际类型声明
如何提取Java泛型类的显式实际类型参数
问题背景
给定这段Java代码:
public class SomeEvent<T extends Serializable> { T value; } class A { int x = 1; SomeEvent<String> a = new SomeEvent<>(); // 目标1 SomeEvent y = new SomeEvent(); SomeEvent<Long> b = new SomeEvent<>(); // 目标2 }
需要找出所有显式指定了泛型参数实际类型的SomeEvent声明,提取出对应的实际类型(这里是String和Long),同时过滤掉无泛型参数的用法。
可行方案
1. 用IDE结构搜索精准匹配
主流IDE(比如IntelliJ IDEA)的结构搜索能直接定位目标代码并提取类型:
- 按
Ctrl + Shift + S打开结构搜索窗口(或通过菜单Edit > Find > Search Structurally) - 输入以下搜索模板:
SomeEvent<$Type$> $var$ = new SomeEvent<>(); - 点击「Find」后,IDE会列出所有符合结构的代码,
$Type$对应的就是我们要找的实际泛型类型(String、Long)
2. 筛选Ctrl + B的用法结果
如果已经通过Ctrl + B打开了SomeEvent的所有用法:
- 在用法列表的搜索框里输入
<,就能快速过滤出带泛型参数的声明(无泛型的用法不会包含<) - 直接从过滤后的结果里提取
<>内的类型即可
3. 正则表达式搜索
用IDE的正则搜索(按Ctrl + R后开启正则模式):
- 输入正则:
SomeEvent<(\w+)> - 搜索结果里的第一个捕获组就是我们需要的实际类型
内容的提问来源于stack exchange,提问作者djy
相关产品推荐
相关产品推荐

