我将一个对象作为参数传递给一个方法。我想知道那个对象的名称--这个特定的引用变量,我一直用它把对象传递给这个方法。有办法搞清楚这件事吗?
或者,通常情况下,是否有一种方法可以找到调用方法用来将该值传递给被调用的方法的变量的名称?提前谢谢。
Note--关于上面的第一个Q:我知道一个对象可以有许多指向它的句柄。这是一个参数名称在方法中是否得到某种“特殊关注”的问题,或者在传递值后没有任何关系。
发布于 2012-11-20 00:21:21
我相信您所要求的不仅仅是Java放在堆栈上的信息。JVM没有任何理由记录变量的名称,当它使用变量所持有的句柄并将其放入堆栈中以调用方法时。事实上,通常没有真正的理由来保留这个名字,过去的汇编。如果你能提供更多关于你为什么要做这样的事情的信息,你可能会得到更合理的回应。
如果您想要的是可能的,它将通过一个StackTraceElement,但看看API,没有什么比您要求的东西。
发布于 2012-11-20 00:30:06
这不起作用的原因不止一个。最重要的是:
函数的参数不需要是变量。您可以请求表达式的文本表示,但这需要与程序一起存储大量未使用的数据。即使是变量名也不会与程序一起存储。编译保留的唯一变量名是静态和实例字段和方法。即使如此,也无法访问调用表达式(除非尝试对调用方进行反编译)。
如果需要一个函数来拥有这类数据,则需要将其作为单独的参数提供:
doLog(foo, "foo");
doLog(new Foo(), "new Foo()");
/*or*/ doLog(new Foo(), null);
https://stackoverflow.com/questions/13464695
复制相似问题