如下代码所示:
public class Main implements MainInter{
public static void main(String[] args) {
List<String> s = new ArrayList<>();
DClassFather var = new DClassFather();
DClassFather d = new DClass();
}
}
我怎样才能知道方法“Main: main”引用类“java.lang.String”、“java.util.ArrayList”、“java.util.List”、“DClassFather”、“DClass”
没有内置的方法可以做到这一点,但是您可以访问(或在 asm-tree 的情况下迭代)每条指令并收集集合中的引用。
基本概念是这样的(使用 asm-tree):
Set<String> dependencies = new HashSet<String>();
for (AbstractInsnNode insnNode : methodNode.instructions) {
if (insnNode instanceof MethodInsnNode methodInsn) {
dependencies.add(methodInsn.owner);
//If you want the full references you should also get the types of the methodDescriptor
}
}