Java 多个班级之间的独生子女?
在我的项目中,我对singleton有一个非常令人不安的问题。 我创建了一个名为Singleton(多么有创意)的类,它有一个变量字符串名 然后我创建了另一个名为Player的类,在这个类中我取了一个用户名 主类,我想在其中保存保存在Singleton中的数据 问题是,只有当我在主类中使用它时,它才会保存用户名。它似乎在其他类中不起作用 原因是什么?如何修复它? 谢谢你的建议:) 这是我的单身班:Java 多个班级之间的独生子女?,java,singleton,Java,Singleton,在我的项目中,我对singleton有一个非常令人不安的问题。 我创建了一个名为Singleton(多么有创意)的类,它有一个变量字符串名 然后我创建了另一个名为Player的类,在这个类中我取了一个用户名 主类,我想在其中保存保存在Singleton中的数据 问题是,只有当我在主类中使用它时,它才会保存用户名。它似乎在其他类中不起作用 原因是什么?如何修复它? 谢谢你的建议:) 这是我的单身班: private String name; public void setName(Str
private String name;
public void setName(String name) {
this.name = name;
}
public String getName( ) {
return
this.name;
}
private static Singleton instance = null;
protected Singleton() {
}
public static Singleton getInstance() {
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
这是一个类,我在其中使用一个用户的名称:
public class NewMain {
public NewMain() {
String u_name="agrfd";
Singleton.getInstance().setName(u_name);
}
}
这里是我想保存Singleton所有数据的主类(这里我只是尝试打印它以确保它工作):
您可能正在使用Singleton设计对象的不同实例。只需使用单例模式 示例性实现:
public class ClassicSingleton {
private static ClassicSingleton instance = null;
protected ClassicSingleton() {
// Exists only to defeat instantiation.
}
public static ClassicSingleton getInstance() {
if(instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
}
您的用法应该是:
public class NewMain1 {
public static void main(String[] args) {
new NewMain(); // execute constructor with setter on creation first
System.out.println(Singleton.getInstance().getName());
}
}
给出一些简单的例子,否则我们只能猜测。只是猜测,没有任何代码。。。但是你确定所有不同的类都在使用同一个单例对象吗?!1.您不应该在NewMain1类中创建(甚至不能)单例。2.main中的代码不会自动执行NewMain中的代码。那叫什么地方?否则你只会给你的孩子打电话我想我的单身班没问题。但我确信我在其他课程中使用这个肯定有问题。你能给我看一看,并举例说明它在我上面的代码中应该是什么样子吗?现在看看。您根本没有创建NewMain类的对象,所以您的setter从未执行过。非常感谢damienix。现在一切都好了,我理解这个错误。许多吻+1达米尼克斯——米奥·维齐奇,波兰人(udzielaj;)
public class NewMain1 {
public static void main(String[] args) {
new NewMain(); // execute constructor with setter on creation first
System.out.println(Singleton.getInstance().getName());
}
}