是否可以通过输入类名字符串来获取该类的所有实例?
像这样吗?
var instances = Reflection.findClass("com.someone.MyClass").getInstances();
欢迎提供任何反馈。谢谢。
是否可以通过输入类名字符串来获取该类的所有实例?
像这样吗?
var instances = Reflection.findClass("com.someone.MyClass").getInstances();
欢迎提供任何反馈。谢谢。
很抱歉,目前没有类似的可用内容。如果您连接到调试API,则可能能够执行此操作,但在“正常”运行时无法执行。
我不知道有没有一种在运行时实现这个的方法,但是如果你愿意“离线”完成它,你可以按照以下步骤操作:
select * from com.someone.MyClass
的命令。运行此查询将返回在获取堆转储文件时内存中存在的实例。这是分析器擅长的事情。使用YourKit,您可以基于通配符类搜索实例,并按照最大到最小或其他排序标准进行检查/导航。
这个答案提供了一些使用各种仪器API的选项。但是这些通常在一个单独的JVM中运行的应用程序上工作,并且它们需要停止JVM并遍历堆中的所有对象以查找相关实例。
Class.forName()
实现),而是通常情况下,一个类并不知道它的实例。