我正在尝试创建一个 Singleton
类,该类将从其他两个类访问。任何人都可以告诉我以下代码有什么问题吗?我就是想不通!
import java.util.LinkedList;
public class MessageQueue {
private static final LinkedList<ServerDataEvent> queue = new LinkedList<ServerDataEvent>();;
private static MessageQueue messageQueue = null;
/** A private Constructor prevents any other class from instantiating. */
private MessageQueue() {
}
/** Static 'instance' method */
public static MessageQueue getInstance() {
if (MessageQueue.messageQueue == null) {
System.out.println("Creating MessageQueue instance.");
MessageQueue.messageQueue = new MessageQueue();
}
return MessageQueue.messageQueue;
}
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
}
我正在从其他类访问单例对象,如下所示:
MessageQueue messageQueue = MessageQueue.getInstance();
没有错误,但是
System.out.println("Creating MessageQueue instance.");
每当我这样做时就会被处决
MessageQueue messageQueue = MessageQueue.getInstance();
编辑 1
import java.util.LinkedList;
public class MessageQueue {
private static final LinkedList<ServerDataEvent> queue = new LinkedList<ServerDataEvent>();;
private static final MessageQueue messageQueue = new MessageQueue();
/** A private Constructor prevents any other class from instantiating. */
private MessageQueue() {
System.out.println("problem...");
}
/** Static 'instance' method */
public static MessageQueue getInstance() {
return MessageQueue.messageQueue;
}
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
}
最佳答案
首先,您没有指定遇到的任何错误。如果您想获得帮助,您应该向我们提供尽可能多的信息。
其次,在 Java 中创建单例的最佳万无一失的方法是:
public enum MySingleton {
INSTANCE;
//whatever methods you want to implement
}
您可以像这样访问它:MySingleton.INSTANCE.whatever()
。
关于java - 创建单例时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6510790/