编辑:答案-错误是方法不是静态的
我用的是单例设计模式
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
// Private constructor prevents instantiation from other classes
private Singleton() {}
public static Singleton getInstance() {
return INSTANCE;
}
}我的问题是如何在(另一个类)中创建Singleton类的对象?
我试过:
Singleton singleton = new Singleton();
// error - constructor is private
Singleton singleton = Singleton.getInstance();
// error - non-static method cannot be referenced from a static context正确的代码是什么?
谢谢,斯宾塞
发布于 2010-05-14 06:44:51
Singleton singleton = Singleton.getInstance();才是正确的方法。确保您的getInstance()方法确实是static。
由于您的Singleton实现远非安全??您的对象可以通过反射进行实例化,因此您可能希望基于enum创建一个单例。
发布于 2010-05-14 06:46:21
Singleton singleton = Singleton.getInstance();应该能工作--考虑到您的代码,这个错误没有意义;您确定您报告的是正确的吗?(如果您忘记将getInstance方法静态化,这将是有意义的,因为您已经在上面的代码中这样做了。)
你给我们的课程代码是正确的。
最后,一个概念上的注意事项:首先,您不是“创建Singleton类的对象”--这是Singleton的全部要点。)您只是获得了对现有对象的引用。
发布于 2010-05-14 06:46:00
这个:
Singleton singleton = Singleton.getInstance();应该行得通。这就是在Java中调用静态方法的方式。getInstance()方法声明为static。您确定您使用的是同一个Singleton类吗?或者您已经在其他包中导入了一个名为“相同”的类。
https://stackoverflow.com/questions/2832297
复制相似问题