-2

使用 Java 反射和 Java 调试接口有什么区别?我什么时候可以使用一个,什么时候可以使用另一个?

4

1 回答 1

2

来自JDI 文档

JavaTM 调试接口 (JDI) 是一种高级 Java API,它为需要访问(通常是远程)虚拟机运行状态的调试器和类似系统提供有用的信息。JDI 提供对正在运行的虚拟机的状态、类、数组、接口和原始类型以及这些类型的实例的内省访问。

JDI 还提供对虚拟机执行的显式控制。暂停和恢复线程的能力,以及设置断点、观察点... 异常通知、类加载、线程创建... 检查暂停线程状态、局部变量、堆栈回溯的能力...

来自反射文档

反射通常由需要能够检查或修改在 Java 虚拟机中运行的应用程序的运行时行为的程序使用。这是一个相对高级的特性,只应该由对语言基础有深入了解的开发人员使用。考虑到这一点,反射是一种强大的技术,可以使应用程序执行原本不可能的操作。

我看到了一些重叠,但对我来说,如果您计划创建自己的调试器,或者如果您有一些无法使用任何现有调试器解决的疯狂问题,则可以使用 JDI。您在运行时使用反射作为对象检查/操作的一种手段,以满足一些非正统的应用程序要求,例如创建自己的ClassLoaderAnnotation.

于 2015-06-17T17:31:06.897 回答