在Java中,我们可以在一个类中创建多少个构造函数。
严格来说,JVM类文件格式将一个类的方法(包括所有构造函数)限制为少于65536。而且,根据汤姆·哈顿(Tom Hawtin)的说法,有效限制为65527。每个方法签名在常量池中占用一个插槽。由于65535池条目中的某些条目(不可避免地)被其他事物消耗,因此格式良好的类文件不可能使用所有可能的方法/构造函数ID。
参考-JVMS 4.1 ClassFile结构
但是,如果您以正常方式编写明智的Java代码,则不会遇到该限制。
你 应该 有几个?这取决于类的用例。经常有多个“便利”构造函数重载,并使用this(...)链到“主”构造函数来实现它们是很好的。(但是,您可以转到顶部。有N!个N个不同参数的可能组合(重载)。)
this(...)
如果发现编写的构造函数过多(主观!),则应考虑使用诸如Builder Pattern之类的替代方法。