我需要分析 Java Spring Boot 应用程序中方法的调用层次结构。
当我有以下情况时,IntelliJ IDEA 会感到困惑:
- 一个接口
I
声明I.foo()
A
具有实现的抽象类I.foo()
- 几个具体的类
B
等C
扩展A
和B
覆盖A.foo()
我想获得呼叫层次结构,B.foo()
但是我也获得所有呼叫者C.foo()
。
如果这很重要,这些类会自动装配,类似于以下内容:
@Component
public class Caller1 {
@Autowired B b;
public void bar(){ b.foo()}
}
@Component
public class Caller2 {
@Autowired C c;
public void bar(){ c.foo()}
}
public interface I {
void foo();
}
public abstract class A implements I {
void foo(){..}
}
@Component
public B extends A {
@Override
void foo() {..}
}
@Component
public C extends A {
..
}
在 IntelliJ IDEA 中,调用层次结构B.foo()
包括Caller1.bar()
和Caller2.bar()
。但我只想要B.foo()
这样的来电者Caller1.bar()
。