Java 多个班级之间的独生子女?

Java 多个班级之间的独生子女?,java,singleton,Java,Singleton,在我的项目中,我对singleton有一个非常令人不安的问题。 我创建了一个名为Singleton(多么有创意)的类,它有一个变量字符串名 然后我创建了另一个名为Player的类,在这个类中我取了一个用户名 主类,我想在其中保存保存在Singleton中的数据 问题是,只有当我在主类中使用它时,它才会保存用户名。它似乎在其他类中不起作用 原因是什么?如何修复它? 谢谢你的建议:) 这是我的单身班: private String name; public void setName(Str

在我的项目中,我对singleton有一个非常令人不安的问题。 我创建了一个名为Singleton(多么有创意)的类,它有一个变量字符串名

然后我创建了另一个名为Player的类,在这个类中我取了一个用户名

主类,我想在其中保存保存在Singleton中的数据

问题是,只有当我在主类中使用它时,它才会保存用户名。它似乎在其他类中不起作用

原因是什么?如何修复它? 谢谢你的建议:)

这是我的单身班:

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());
    }
}