如何在运行时获取一个 Java 类的所有对象实例呢?
比如 A 已经 new 了 10 个对象,现在通过 A.class 就能直接获取到这 10 个对象。前提是这个类可能是任何一个类,既不是单例,也不一定是由 Spring 管理,也不提供静态方法,有的时候还不能修改其代码,这里给大家介绍一种底层实现的方式,基于 jvmti ,代码用 C++实现。
先引用 maven 依赖
<dependency>
<groupId>io.github.liubsyy</groupId>
<artifactId>FindInstancesOfClass</artifactId>
<version>1.0.3</version>
</dependency>
然后调用 InstancesOfClass.getInstances(Class<?> targetClass)即可获取 Object[]实例对象。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.