Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在创建singleton时构造函数是默认的?_Java_Constructor_Singleton - Fatal编程技术网

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

Java 为什么在创建singleton时构造函数是默认的?,java,constructor,singleton,Java,Constructor,Singleton,为什么在这个方法中使用默认构造函数 public static TicketCounterSingle getInstance() { if (instance == null) { instance = new TicketCounterSingle(); } return instance; } 这是完整的课程: public class TicketCounterSingle { private static TicketCounterSi

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

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

也许只有一个默认构造函数?请你把全班同学都给我们看看,并详细解释一下你不能理解的内容好吗?谢谢…构造函数TicketCounterSingle()是未定义的编译error@Nisha这正是我试图回答的。。。定义一个或使用一个有参数的。