【发布时间】:2016-12-11 19:49:07
【问题描述】:
作为行为测试的一部分,我需要模拟给定类中的方法调用。
所以说如果我有这样的课程:
class A {
public void abc(){
new classB().getData();
}
public void xyz( boolean callabc){
if (callabc) {
abc();
}
}
所以我的要求是首先找到 A 类中的所有方法,然后找到哪个方法正在执行哪个调用,例如 xyz 正在调用 abc,而它正在调用 B 类的 getData 方法。
是否有可能在 Java 中获取所有这些数据?
【问题讨论】:
-
嗯...看起来你想要反思 - 我认为现在开始学习反思还为时过早。但我可能错了。
-
那不是有效的java。除了不理解这个问题。
-
反射可以得到方法。我不太确定找到调用其他方法的方法
-
谢谢你们。反射是我也在尝试的一件事,但我陷入了一种调用另一种方法的困境。尤其是当呼叫超出当前课程(在我的示例中为 A 类)时。
-
Java 不提供有关从代码调用的方法的信息或对方法代码的任何见解。只是存在这些方法,它们的名称和参数。但是,您可以检查类的字节码(在任何语言中,它只是一种文件格式)并基本上反编译代码以获得所需的信息。我想这真的很困难,有时甚至是不可能的,因为可以通过反射调用方法,并且它被用来故意混淆来自此类工具的方法调用。