5

我正在尝试使用 IntelliJ 10.5 的“结构搜索”功能来查找实现接口A但不实现另一个接口B的类。

通过首先搜索实现A的类,然后将搜索范围限制为“以前的搜索结果”,很容易将其简化为仅搜索未实现B的类,这在概念上非常简单。不幸的是,我还没有成功地完成它。

如果我搜索

class $clazz$ implements $B$ {}

然后在变量 B 的文本约束中勾选“反转条件”,它似乎找到了“所有实现B以外的东西的类”,即使它们也实现了B。我还尝试在“完全匹配”变量上勾选“反转条件”,它的效果不是立即明显,但绝对不是我想要的。

偶然地,其他人在 IntelliJ 论坛上提出了类似的问题,但没有得到爱。帮帮我,stackoverflow!

4

1 回答 1

3

为了找到实现 InterfaceA 但不实现 InterfaceB 的类,我执行了以下操作:

  1. 搜索 > 结构搜索
  2. 单击复制现有模板
  3. 选择接口的实现者(在层次结构内)并单击确定
  4. 单击编辑变量
  5. 变量列表中选择接口
  6. Text/regular expression中输入InterfaceA,点击OK
  7. 点击查找
  8. 搜索 > 结构搜索
  9. 单击编辑变量
  10. 变量列表中选择接口
  11. Text / regular expression中输入InterfaceBMinimum Count中输入0Maximum Count中输入0并单击OK
  12. 范围下拉列表中选择以前的搜索结果
  13. 点击查找

请注意,当我在第 8 步尝试使用“编辑查询”按钮时遇到问题。我没有研究/重试,但返回菜单并选择“搜索”>“结构搜索”肯定有效。

于 2011-07-11T23:15:50.027 回答