You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用IntelliJ结构化搜索被实例化的无字段工具类?

问题描述

工具类是无状态的,因此不包含字段。我想找出代码中所有被实例化的工具类。已经给已知的所有工具类添加了私有无参构造方法,但仍有一些遗留的旧工具类。刚找到一个,想找出其他同类类,能不能通过Structured Search and Replace(SSR)实现?

编辑补充:
我针对这个问题做了一次SSR尝试(图片展示了我的最佳尝试)。原本以为把$Field$的计数设置为[0,0],就能找出所有包含公共构造方法且无字段的类,但搜索结果却返回了含字段的类,比如下面这个类:

public class HTTPAuthenticationRequest implements InternalMsg {

  protected String echoData;
}
解决方法

可以通过调整SSR的搜索模板来精准匹配目标类,具体操作如下:

  • 构建精准的类搜索模板
    使用以下模板代码:

    public class $Class$ {
      $Fields$
      $Constructors$
      $Methods$
    }
    

    给模板变量设置约束:

    • $Fields$:设置出现次数为[0,0],确保类里没有任何字段(不管访问修饰符是私有、保护还是公有)
    • $Constructors$:设置必须包含至少一个公共构造方法(工具类一般是无参,也可以针对性约束为无参构造)
    • 可选:给$Methods$设置至少包含一个静态方法,进一步匹配工具类的特征
  • 排除业务类干扰
    在SSR的「Filters」面板给$Class$加约束:排除实现了业务接口的类(比如例子里的InternalMsg),避免把业务DTO这类带字段的类误搜进来。

  • 直接定位被实例化的工具类
    还可以搭配另一个SSR模板,专门找被实例化的无字段类:

    new $ToolClass$($Args$);
    

    给$ToolClass$设置约束:对应的类无字段且有公共构造方法,这样能直接揪出那些被实例化的遗留工具类。


内容的提问来源于stack exchange,提问作者caduceus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:02:27