如何在运行时检查是否有类的实例?

时间:2012-02-15 04:32:12

标签: java

是否有任何方法可以检查某个类的实例是否正在运行?

我有一个GUI,如果一个已经运行,我不想打开它的另一个实例。 我知道在构造函数中包含一个计数器。除此之外的任何方法?

提前致谢!!

3 个答案:

答案 0 :(得分:4)

使用singleton pattern

这是一个简单的java单例实现:

public class MyClass {
    private static MyClass INSTANCE = new MyClass();

    private MyClass() { // private constructor prevents creation outside class
    }

    public static MyClass getInstance() {
        return INSTANCE;
    }
}

请注意,这不是"防弹" (有" hacks"你可以通过反射来绕过这个并创建两个实例),但是如果你是代码的唯一用户就可以了。

答案 1 :(得分:0)

  

是否有任何方法可以检查某个类的实例是否正在运行?

简单的答案是否。

解决此问题的常用方法是使用Singleton设计模式。模式的想法是你编写代码删除创建类的多个实例的可能性

在Java中,您通常通过将类构造函数声明为私有,并通过静态方法提供对单例实例的访问来实现此目的。根据您的精确要求,可以急切地或懒惰地创建单身人士。

波希米亚人的回答提供了这种方法的一个很好的例子。

(在Java 5或更高版本中,也可以使用enum类型来实现单例。)

答案 2 :(得分:0)

按照J. Bloch(Effective Java Programming 2nd Ed。,Addison Wesley)的推荐使用Enum