IntelliJ Structural Search查找实现A而不是B的类

时间:2011-06-06 16:14:26

标签: intellij-idea structural-search

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

首先搜索实现 A 的类,然后将搜索范围限制为“之前的搜索结果”,可以很容易地将其减少为仅搜索未实现 B的类,这在概念上非常简单。不幸的是,我还没有把它拉下来。

如果我搜索

class $clazz$ implements $B$ {}

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

Inicidentaly,其他人在IntelliJ论坛上问a similar question,但没有爱。帮助我,stackoverflow!

1 个答案:

答案 0 :(得分:3)

要查找实现InterfaceA但未实现InterfaceB的类,我执行了以下操作:

  1. 搜索>在结构上搜索
  2. 点击复制现有模板
  3. 选择界面的实施者(在层级内),然后点击确定
  4. 点击修改变量
  5. 变量列表
  6. 中选择界面
  7. 文字/正则表达式中输入 InterfaceA ,然后点击确定
  8. 点击查找
  9. 搜索>在结构上搜索
  10. 点击修改变量
  11. 变量列表
  12. 中选择界面
  13. 文本/正则表达式中输入 InterfaceB ,在最小数量 0 中输入 0 strong> 最大点数,然后点击确定
  14. 范围下拉列表中选择以前的搜索结果
  15. 点击查找
  16. 注意我在步骤8尝试使用编辑查询按钮时出现问题。我没有研究/重试,但返回菜单并选择搜索>搜索结构绝对有效。