为什么在创建singleton时构造函数是默认的



为什么在这个方法中使用默认构造函数?

public static TicketCounterSingle getInstance() {
if (instance == null) {
instance = new TicketCounterSingle();
}
return instance;
}

这是完整的类:

public class TicketCounterSingle {
private static TicketCounterSingle instance;
String Name;
int avail;
private TicketCounterSingle(String Name, int avail) {
this.avail = avail;
this.Name = Name;
}
public String getName() {
return Name;
}
public synchronized boolean bookTicket(int ticket) {
if (avail >= ticket) {
avail = avail - ticket;
return true;
} else {
return false;
}
}
public static TicketCounterSingle getInstance() {
if (instance == null) {
instance = new TicketCounterSingle();
}
return instance;
}
}

您的代码不会编译,因为没有默认的构造函数。

TicketCounterSingle() {}

在你的课堂上。

有一个参数化的:

private TicketCounterSingle(String Name, int avail) {
this.avail = avail;
this.Name = Name;
}

这意味着默认构造函数将不会自动提供,并且您必须提供默认构造函数或在参数化getInstance(String name, int avail)方法中调用参数化构造函数:

public static TicketCounterSingle getInstance(String name, int avail) {
if (instance == null) {
instance = new TicketCounterSingle(String name, int avail);
}
return instance;
}

最新更新