我希望在程序中添加一个函数,我使用静态变量来创建驱动程序使用名称的所有时间的列表。我需要知道的是,在java中,是否有一种方法可以访问引用变量(作为字符串)将其添加到列表中? 伪代码:
300 300
getReferenceVariable是我要问的是否有人知道如何做到这一点
答案 0 :(得分:0)
如果我理解正确,你想保留一个列表,列出构造函数被调用的所有时间,并保存当前正在创建的变量的名称?因为"参考变量"使用构造函数时为none,因为您使用new MyClass()
调用构造函数,而不是obj.MyClass()
。
但是,如果你只是想知道是谁打电话给你(作为堆栈跟踪),你可以简单地按照in this thread编写(没有双关语),使用
Thread.currentThread().getStackTrace()
,然后选择所需的堆栈帧(可能是2,因为数组中的第一个元素(索引0)是java.lang.Thread.getStackTrace方法,第二个(索引1)是构造函数,并且2是从中调用构造函数的位置,您可以在其中获取(例如)此堆栈跟踪对应的源文件的名称。 getFileName()
由于我还没有尝试过(目前不可能),我谨慎地为您提供代码:
public class MyClass(){
MyClass(){
callerName = Thread.currentThread().getStackTrace()[2].getFileName();
... // anything here
}
}