Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何跟踪方法中的参数?_Java - Fatal编程技术网

Java 如何跟踪方法中的参数?

Java 如何跟踪方法中的参数?,java,Java,基本上我需要跟踪方法对参数的作用,我不能修改要跟踪的函数 最终,我要做的是直观地表示该方法对参数所做的操作 我知道java是按值传递的,所以在不修改方法本身的情况下,我很难找到解决方法 例如: public void foo(int x){ x+=10; } 如果我这样称呼它: foo(2); 我需要能够画2个矩形,一个有2个宽度,一个有12个 我真的很感谢你的帮助,提前谢谢你 Java按值传递参数,因此方法中的指令 x += 10; 对传入的内容没有任何影响 int i = 2;

基本上我需要跟踪方法对参数的作用,我不能修改要跟踪的函数

最终,我要做的是直观地表示该方法对参数所做的操作

我知道java是按值传递的,所以在不修改方法本身的情况下,我很难找到解决方法

例如:

public void foo(int x){
   x+=10;
}
如果我这样称呼它:

foo(2);
我需要能够画2个矩形,一个有2个宽度,一个有12个


我真的很感谢你的帮助,提前谢谢你

Java按值传递参数,因此方法中的指令

x += 10;
对传入的内容没有任何影响

int i = 2;
foo(i);
System.out.println(i); // 2

您必须执行静态代码分析来显示方法内部发生的情况,注意传入的变量实际上没有发生任何变化。

因此,从表面上看,您需要某种堆栈或列表来维护更改的历史记录,不幸的是,没有“魔力”您可以在不修改方法或调用它的人的情况下执行此操作。该方法不会执行任何操作。它只更改外部完全无法访问的局部变量。如果编译器将其作为一个optimization.shot完全删除,我也不会感到惊讶。我试着用一个我不记得名字的图书馆。它让我创建了一个叫做增强器的东西,它让我截获了一个方法,我尝试在继续使用该方法之前向参数添加一个侦听器,但不幸的是,在调用该方法之后,参数切换回其原始值。谢谢你的帮助!伊瓦尔,是的,这个方法只是一个简单的例子。如果它是一个for循环,它打印出一些对参数所做的数学方程,它会有什么不同吗?@AhmedMaarek我不是该领域的专家,所以我不能给你一个明确的答案。这并非完全不可能。调试器用于单步执行代码,因此您可以使用调试器执行的相同路径,尽管这可能不是一个简单的练习。(虽然我自己从未尝试过,但谁知道呢)明白了,你能告诉我从哪里开始阅读静态代码分析吗