我可以使用Java反射获取有关局部变量的信息吗?

 

问题描述:

我需要知道局部变量的类型。我正在使用Java反射,但无法使用它。您能否让我知道如何知道局部变量的类型/名称。

我可以使用Java反射获取有关局部变量的信息吗?


 

第 1 个答案:

假设你在谈论方法或构造函数的局部变量,则无法使用反射来了解它们。你要么

  • 使用字节码库,例如BCEL或ASM,或
  • 使用远程调试器API之一。
    后者将允许你访问局部变量的值,但仅当JVM被调试代理挂起时才可以。

这两种方法都依赖于用调试信息编译的相关类。具体而言,需要使用“局部变量调试信息”来编译类。例如使用javac -g ...。默认情况下不包括“ vars”调试信息。


示例代码:int width = 5;int area = 8;int potato = 2;int stackOverflow = -4;现在,说我想让用户输入一个字符串:String input = n ...