почему конструктор по умолчанию при создании синглтона? - PullRequest
0 голосов
/ 06 ноября 2019

Почему в этом методе используется конструктор по умолчанию?

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

1 Ответ

0 голосов
/ 06 ноября 2019

Ваш код не скомпилируется, потому что в вашем классе нет конструктора по умолчанию

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;
}
...