在Intellij IDEA中使用结构搜索,如果我想找到实现接口但不扩展另一个类的所有类,搜索模板应该如何?模板分别是:
class $Class$ implements $Interface$ {}
和
class $Class$ extends $Parent$ {}
分别设置最小值和最大值1,1和0,0。
我尝试了类似这个问题但没有成功:
IntelliJ Structural Search to find classes that implement A but not B
答案 0 :(得分:2)
您可以将两个模板组合在一起:
class $Class$ extends $Parent$ implements $Interface$ {}
使用以下变量设置
$Parent$
:
正文/正则表达式Excluded
并启用Apply constrains in type hierarchy
,最小/最大0,0
$Interface$
:
正文/正则表达式Included
并启用Apply constrains in type hierarchy
,最小/最大1,1
当我在以下测试代码中使用这些设置进行搜索时,会找到类B
和E
。
class Excluded {}
interface Included {}
class A extends Excluded implements Included {}
class B implements Included {}
class C extends Excluded {}
class D extends A {}
class E extends B {}
class F {}
您当然需要使用自己的类和接口名称,而不是包含和排除。