【问题标题】:Accesing a reference variable from inside a method java从方法 java 内部访问引用变量
【发布时间】:2017-11-29 14:06:15
【问题描述】:

我希望向程序中添加一个函数,在该程序中我使用静态变量来创建驱动程序使用构造函数的所有时间的列表,使用名称。我需要知道的是,有没有办法在java中访问引用变量(作为字符串)以将其添加到列表中? 伪代码:

    public ClassName
    String static list = "";  
    Public ClassName (parameters){
      list += getReferenceVariable();
    }

getReferenceVariable 是我要问的是否有人知道这样做的方法

【问题讨论】:

  • 每个对象都有一个toString() 方法,每个原始类型都可以转换为字符串表示。你是这个意思吗?你能提供你想要做什么的伪代码吗?
  • 请提供实际代码而不是伪代码。当我们只能看到伪代码时,我们很难提供帮助。
  • 是的,我提供了一些伪代码(为了澄清)
  • 不清楚您所说的“作为字符串的引用变量”是什么意思 - 并且使用 real 代码而不是伪代码会好得多。如果您的意思是从 Foo x = new Foo() 中从 Foo 构造函数中获取 x 名称,那么不,您绝对不能。
  • 好的,谢谢乔恩,这就是我想问的。我将学会更好地格式化我的问题。

标签: java methods constructor reference


【解决方案1】:

如果我理解正确,你想保留一个构造函数被调用的所有时间的列表,并保存当前正在创建的变量的名称吗?因为当您使用构造函数时“参考变量”是无的,因为您使用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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多