繁体   English   中英

如何在Java中获取参数的变量名称

[英]How can i get the name of a variable name of a parameter in Java

我将一个对象作为参数传递给方法。 我想知道该对象的名称 - 我一直用于将对象传递给方法的特定引用变量。 有没有办法找到这个?

或者,通常,有没有办法找出调用方法使用的变量名称将该值传递给调用的方法? 提前致谢。

注意 - 关于上面的第一个问题:我知道一个对象可以有许多指向它的句柄。 这是一个问题,参数名称是否在方法中得到某种“特别关注”,或者一旦传递该值就没有任何问题。

我相信你所要求的不仅仅是Java提供的堆栈信息。 当JVM接受该变量持有的句柄并将其放入堆栈以调用方法时,JVM没有理由记录变量的名称。 实际上,通常没有理由在编译之后保留该名称。 如果你能提供更多关于你为什么要做这种事情的信息,你可能会得到更合理的回答。

如果您想要的是可能的,那将是通过StackTraceElement ,但是看看API,没有什么比你想要的更好。

这不可能有多种原因。 最重要的是:

函数的参数不必是变量。 您可以请求表达式的文本表示,但是需要将大量未使用的数据与程序一起存储。 甚至变量名也不与程序一起存储。 编译保留的唯一变量名是静态和实例字段和方法。 即使这样,也没有办法(没有尝试反编译调用者)来访问调用表达式。

如果您需要一个具有此类数据的函数,则需要将其作为单独的参数提供:

doLog(foo, "foo");
doLog(new Foo(), "new Foo()");
/*or*/ doLog(new Foo(), null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM