是否有任何方法可以检查某个类的实例是否正在运行?
我有一个GUI,如果一个已经运行,我不想打开它的另一个实例。 我知道在构造函数中包含一个计数器。除此之外的任何方法?
提前致谢!!
答案 0 :(得分:4)
这是一个简单的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