当前位置: 首页 > 面试题库 >

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

姬歌者
2023-03-14
问题内容

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

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我正在为项目编写自定义日志记录系统。如果一个函数抛出异常,我想记录它的局部变量。是否可以从捕获异常的except块中访问提升函数的局部变量?例如: 问题答案: 如果您知道异常处理代码将需要使用该值,那么通常将其传递给异常是一种更干净的设计。但是,如果要编写调试器或类似的东西,则需要在不事先知道变量的情况下访问变量,则 可以 在引发异常的上下文中访问任意变量: 模块文档中介绍了该功能的功

  • 问题内容: 如果我有这样的课程: 有没有办法知道使用名为类型的参数? 问题答案: 总结一下: 如果编译期间包含调试信息,则可以获取参数名称。查看此答案以获取更多详细信息 否则得到的参数名称是不是有可能 使用可以获取参数类型 为了编写编辑器的自动完成功能(如你在评论之一中所述),有几个选项: 使用,,等。 使用,等。 结合使用以上内容-前者用于非基本类型,而后者用于基本类型。 根本不显示参数名称-仅

  • 问题内容: 给定以下程序: 您是否希望在run方法中的while循环仍在执行且局部变量test仍在范围内时调用finalize? 更重要的是,此行为在任何地方都有定义吗?Sun有什么声明它是实现定义的吗? 这与以前人们在主要关注内存泄漏的SO上提出此问题的方式相反。在这里,我们让GC积极地对变量感兴趣的变量进行GC处理。您可能会因为测试仍在“范围内”而不会被GC,所以您可能会期望这样做。 作为记录

  • 主要内容:使用反射值对象包装任意值,从反射值对象获取被包装的值当我们将一个接口值传递给一个 reflect.ValueOf 函数调用时,此调用返回的是代表着此接口值的动态值的一个 reflect.Value 值。我们必须通过间接的途径获得一个代表一个接口值的 reflect.Value 值。 reflect.Value 类型有很多方法( https://golang.google.cn/pkg/reflect/)。我们可以调用这些方法来观察和操纵一个 ref

  • 使用Java反射,是否可以获取局部变量的名称?例如,如果我有: 有没有可能实现一种方法,可以找到这些变量的名称,比如: 编辑:这个问题与Java中有没有找到传递给函数的变量名称的方法不同?在这一点上,它更纯粹地询问一个人是否可以使用反射来确定局部变量的名称,而另一个问题(包括公认的答案)更侧重于测试变量的值。

  • :我知道如何: 运行不带参数的私有void方法 :我知道如何: 设置任意类型的私有字段 设置任意类型的私有静态字段 设置任意类型的私有最终字段 设置任意类型的私有静态最终字段 :我知道如何: 获取任何类型的私有字段 :我知道如何: (可用于以单模式创建私有构造函数的新实例,同时保持实例Field为空) 创建不带参数的私有构造函数的新实例 我不知道的,我想知道的: 获取任何类型的私有静态字段,并将其