关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
5天前关门了。
改进这个问题
如何打印x1和x2(它们在一个对象中),如下所示:
x01 = "نام کاربری شما"+x1;
x02 ="پسورد شما"+x2;
我的代码:
public class singleton{
private static singleton singleton1;
public String x1;
public String x2;
public String x01;
public String x02;
private singleton() {
x01 = "نام کاربری شما"+x1;
x02 ="پسورد شما"+x2;
}
public static singleton getInstance() {
if (singleton1 == null)
singleton1 = new singleton();
return singleton1;}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("نام کاربری خود را وارد کنید");
String x1 = sc.nextLine();
System.out.println("پسورد خود را وارد کنید");
String x2 = sc.nextLine();
singleton x = singleton.getInstance();
singleton y = singleton.getInstance();
System.out.println(x.x01);
System.out.println(x.x02);
}
1条答案
按热度按时间62lalag41#
这是错误的。如果两个线程都调用
getInstance()
,则可以有两个或多个singleton
.一般来说,这段代码没有意义。类只有在需要时才会被加载,这意味着一个单例类只需自己生成一个变量,就可以得到所需的,没有bug,而且效率很高。简单到:
这实际上并不创建单例,直到它被触摸,但是,高效,简单和无bug。关于如何正确处理单例问题,有大量的例子。除非它们看起来与上面的一样(或者可能是为了迎合您不需要的异国情调用例,用一个内部类来存储
static final Singleton SINGLETON
),他们错了。你看,这是一个很常见的误解。如果您有疑问,请在这个构造函数中抛出一个print语句,并观察它何时打印。