【问题标题】:Is it possible to get access to local variable of method in runtime with Reflection API or with some other things?是否可以使用反射 API 或其他一些东西在运行时访问方法的局部变量?
【发布时间】:2014-07-16 14:11:13
【问题描述】:

其实这是我的代码

public class Example {

    public void method () throws InterruptedException {
        int var = 100;        
        Thread.sleep(5000);

        // do some logic
    }    
}

我需要知道局部变量 var 像智者所说的那样被封装了。

【问题讨论】:

  • 你想达到什么目的?你想在哪里访问局部变量?
  • 就像我在运行时所说的那样。一般原因。
  • 为什么不用变量名var来访问呢?为什么需要反思?
  • 问题实际上是关于安全和封装的。
  • Aaron,我认为我们有语言问题;许多读者不确定您的问题是什么。如果您提供有关您正在尝试做什么(或您试图阻止其他人做什么)的更多信息,它将帮助人们回答您。 (例如,您是否试图读取您没有源代码的类/库中的隐藏变量?)

标签: java core


【解决方案1】:

局部变量仅在方法运行时存在,并且在方法的每次激活中都有一个单独的副本。由于反射 API 不反映方法激活,因此无法通过反射获取方法的局部变量。

【讨论】:

  • 好的。也许还有其他一些方法可以得到这个变量?如果方法正在执行 - 例如 - 10 分钟,我可以从他的外部访问他的本地 var 吗?我的意思是也许有一些肮脏的黑客可以连接到 JVM 并获取局部变量?
  • 正如其他人在 cmets 中提到的,如果 JVM 在调试模式下运行,它可以通过调试器访问。当然,具有适当技能的人可以通过查看正在运行的 JVM 的原始内存并以这种方式找到价值。但是 Java 代码没有正常的编程方式来访问其他方法的局部变量。
猜你喜欢
  • 1970-01-01
  • 2013-02-08
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
相关资源
最近更新 更多