【问题标题】:IntelliJ Structural Search to find classes that implement A but not BIntelliJ 结构搜索以查找实现 A 但不实现 B 的类
【发布时间】:2011-09-09 10:35:51
【问题描述】:

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

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

如果我搜索

class $clazz$ implements $B$ {}

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

碰巧,有人在 IntelliJ 论坛上问过a similar question,但没有得到爱。帮帮我,stackoverflow!

【问题讨论】:

    标签: intellij-idea structural-search


    【解决方案1】:

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

    1. 搜索 > 结构搜索
    2. 点击复制现有模板
    3. 选择接口的实现者(在层次结构内)并点击确定
    4. 点击编辑变量
    5. 变量列表中选择接口
    6. 文本/正则表达式中输入InterfaceA并点击确定
    7. 点击查找
    8. 搜索 > 结构搜索
    9. 点击编辑变量
    10. 变量列表中选择接口
    11. 文本/正则表达式中输入InterfaceB,在Minimum Count0中输入0 strong> 在 最大计数 中,然后单击 确定
    12. 范围下拉列表中选择Previous Search Results
    13. 点击查找

    请注意,当我在第 8 步尝试使用 Edit Query 按钮时遇到问题。我没有研究/重试,但返回菜单并选择 Search > Search Structurally 肯定有效。

    【讨论】:

    • 不幸的是,搜索的第二部分似乎消除了不直接实现不需要的接口的类,但不排除通过基类实现它的类:interface Good {}interface Bad {} class Base implements Bad {}class NotFiltered extends Base implements Good {}
    • 我很抱歉,顺便说一句,我没有尽快回复您的评论。我非常感谢您的帮助!但是我的 IDEA Ultimate eval 许可证过期了,我才买了一个,所以我无法测试你的处方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2020-03-03
    相关资源
    最近更新 更多