获取类的所有实例[重复]

Posted

技术标签:

【中文标题】获取类的所有实例[重复]【英文标题】:Getting all instances of a class [duplicate] 【发布时间】:2012-04-09 09:04:04 【问题描述】:

可能重复:Is there a simple way of obtaining all object instances of a specific class in Java

在java中,有没有办法获取某个类的所有实例?

【问题讨论】:

因为您将实例化它们,只需保留对每个实例的(弱?Java 是否有弱引用?)引用。但我怀疑任何需要这个的设计...... 【参考方案1】:

您可以在实例化您的类 (Singleton pattern) 时使用工厂静态初始化程序,然后将工厂构造函数中生成的每个实例添加到 List ...

类似这样的:

  class MyObject 
    private static List instances = new ArrayList();

    public static MyObject createMyObject() 
    MyObject o = new MyObject();
    instances.add(new java.lang.ref.WeakReference(o));
    return o;
    

    public static List getInstances() 
    return instances;
    

    private MyObject() 
    // Not allowed 
    
  

【讨论】:

弱哈希集可能是一个更好的集合,因为它透明地清理了此类引用。 Set<MyObject> instances = Collections.newSetFromMap(new WeakHashMap<MyObject, Boolean>()); 这不是我当前问题的可行解决方案...我想获取第三方类的实例。【参考方案2】:

一般不会。如果您正在使用调试器 API,它可能是可能的(我还没有检查过),但您不应该使用该 other 而不是调试。

如果您的设计需要这样做,则可能值得重新考虑该设计。

【讨论】:

以上是关于获取类的所有实例[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用外部类的实例访问嵌套类的属性[重复]

公共属性列表及其值[重复]

从python中的Selenium Webdriver实例获取文本[重复]

最终类的编译器错误实例[重复]

不允许定义一个类的多个实例[重复]

PHP单例类的最佳实践[重复]