Java 查找不重写方法的类

Java 查找不重写方法的类,java,intellij-idea,Java,Intellij Idea,IntelliJ IDEA中是否有任何方法可以搜索不重写某个方法的类 假设我有这些课程: public abstract class BaseClass { public void methodThatMightBeOverridden() { } } public class ConcreteClassWithOverriddenMethod extends BaseClass { @Override public void methodThatMightBeOverridd

IntelliJ IDEA中是否有任何方法可以搜索不重写某个方法的类

假设我有这些课程:

public abstract class BaseClass {
  public void methodThatMightBeOverridden() {
  }
}

public class ConcreteClassWithOverriddenMethod extends BaseClass {
  @Override
  public void methodThatMightBeOverridden() {
    super.methodThatMightBeOverridden();
  }
}

public class ConcreteClassWithoutOverriddenMethod extends BaseClass {
}

public class AnotherConcreteClassWithoutOverriddenMethod extends ConcreteClassWithoutOverriddenMethod {
}
在IntelliJ中是否可以找到未覆盖可能被覆盖()的
方法的
基类的所有扩展名?注意,我需要查找类,即使它们不直接实现
BaseClass
。在上面的示例中,这将是
concreteclasswithoutoverridedmethod
另一个concreteclasswithoutoverridedmethod

我知道如何使用类型层次结构查找方法被重写的类,但还没有找到另一种方法


我曾尝试在谷歌上搜索,但没有任何运气。此外,这是一个简化的示例。在实际代码中,我们有许多子类的实现,其中一些没有扩展该类。

您可以使用结构化搜索。使用如下搜索模板:

class $A$ extends $B$ {

   void $m$();
}

其中,在
编辑变量下
变量
m
具有可能被覆盖的text/regexp
方法和
0的最小+最大出现次数计数。变量
B
具有text/regexp
基类
,并且启用了类型层次结构中的
应用约束
复选框。

我找到了对此的支持。通过站在方法上并按Ctrl+Shift+H(或在菜单中导航->方法层次结构),您可以很好地查看所有重写方法:

在这里,我将所有四个类都放在一个名为
Test
的类中,如下所示,因此在类名后面有“in-Test”文本。这幅图是非常自解释的,但是减号意味着类不会重写该方法

package test;

public class Test {

  public abstract class BaseClass {
    public void methodThatMightBeOverridden() {
    }
  }

  public class ConcreteClassWithOverriddenMethod extends BaseClass {
    @Override
    public void methodThatMightBeOverridden() {
      super.methodThatMightBeOverridden();
    }
  }

  public class ConcreteClassWithoutOverriddenMethod extends BaseClass {
  }

  public class AnotherConcreteClassWithoutOverriddenMethod extends ConcreteClassWithoutOverriddenMethod {
  }

}

你的解决方案有效。然而,我的示例类被简化了,真正的类是泛型的。我想也可以扩展结构搜索以允许泛型。