【问题标题】:how to get local variables of a method from another class如何从另一个类中获取方法的局部变量
【发布时间】:2019-04-24 13:01:17
【问题描述】:

我有两个班级 A 和 B 一个类包含一个方法,该方法具有一些局部变量。 现在我想在 B 类中获取特定变量的数据类型。 你能帮我解决这个问题吗?

我研究了java反射。但是我发现我无法通过使用反射来实现这一点,因为局部变量在运行时存储在堆栈中。而反射只能获取实例或类变量。

for example,

class A{
     method1(){
         variable1;
     }
}
class B{
      method 2(){
           fetch variable1;
       }
}

我想要 variable1 的数据类型作为结果。

有什么方法可以使用模拟或其他方式来实现它吗?

【问题讨论】:

  • 你不能。这些变量是局部变量是有原因的。
  • 当您从该方法返回局部变量或全局变量时,您可以获得局部变量
  • 你不能,变量 1 是一个局部变量,因此一旦方法 1 完成就会被销毁,并且只在方法 1 中具有作用域。
  • 那个目标毫无意义。您可能不知道,在您的 .java 文件编译后,局部变量不再存在。它们已被处理堆栈的二进制指令取代。
  • @Jaja Java 没有全局变量。无论您返回什么都不是局部变量,而是一个值。现在,假设他在谈论他无法更改的代码,他不能只添加返回类型和语句。

标签: java methods reflection local-variables


【解决方案1】:

感谢您的支持。 我自己找到了答案。 我可以通过 Java Regex Concept 做到这一点。 正如我对变量命名模式的了解, 所以我打算解析 class1.java 文件,首先尝试模式匹配方法名称,然后是变量名称。 这样我就会得到声明变量的行。 例如,如果我的变量是对象, 字符串 abc=new String();

我会尝试正则表达式,例如 String regex=".=new.().*"

所以这将实现我的目的。 再次感谢您的帮助。

【讨论】:

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