当前位置: 首页 > 面试题库 >

在Java中,我们可以在一个类中创建多少个构造函数?

长孙玉泽
2023-03-14
问题内容

在Java中,我们可以在一个类中创建多少个构造函数。


问题答案:

严格来说,JVM类文件格式将一个类的方法(包括所有构造函数)限制为少于65536。而且,根据汤姆·哈顿(Tom
Hawtin)的说法,有效限制为65527。每个方法签名在常量池中占用一个插槽。由于65535池条目中的某些条目(不可避免地)被其他事物消耗,因此格式良好的类文件不可能使用所有可能的方法/构造函数ID。

参考-JVMS 4.1
ClassFile结构

但是,如果您以正常方式编写明智的Java代码,则不会遇到该限制。

应该
有几个?这取决于类的用例。经常有多个“便利”构造函数重载,并使用this(...)链到“主”构造函数来实现它们是很好的。(但是,您可以转到顶部。有N!个N个不同参数的可能组合(重载)。)

如果发现编写的构造函数过多(主观!),则应考虑使用诸如Builder
Pattern之类的替代方法。



 类似资料:
  • 在Java中,我们可以在一个类中创建多少构造函数。

  • 我正在使用AWS-CDK为应用程序构建基础设施。 我有一个构建多个S3存储桶的构造和另一个创建lambda函数从这些存储桶获取数据的构造。 为了能够给我的lambda权限从桶中获取数据,我需要桶ARN。 有没有一种方法,我可以从生产桶的结构导出桶arn,并将其导入lambda结构?

  • 我了解到连池的实现是基于提供者的,所以SQL数据提供者的连池工作方式将不同于Oledb的连池。(参考文献:http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx)池的默认最大物理连接是100。如果我们有不同的连接字符串(或不同的字符串顺序,但相同的数据库)或不同的窗口身份(如果我们使用窗口身份验证),新的连接池将被创建。 请让我知道,如果你不清楚

  • 参加以下课程: 由于Foo(std::stringbar_, intbaz_=7);是我唯一的构造函数,编译器不应该为我实现默认构造函数,对吗?我认为我可以构造这个类的唯一两种方法是: 然而,为什么这是可能的? 当唯一的公共构造函数要求其第一个参数具有值时,我不理解如何默认构造类。将默认构造函数设为私有或尝试C 11删除它,没有什么区别。这是怎么发生的 http://ideone.com/CL7I

  • 问题内容: 这是一段代码,作为示例,其余的只是方法(迷宫类的底部)。所以当实例化时,使用 和 这将打印出网格阵列。这是合法的吗?我认为所有类都需要构造函数,它如何打印出二维网格数组? 迷宫课: 问题答案: 不需要 显式 定义构造函数;但是,所有类都必须具有构造函数,如果不提供任何默认构造函数,则将生成默认的空构造函数: 请参见默认构造函数。

  • 问题内容: 这是面试中提出的问题。如果一个类在Java中何时有多个构造函数,我们可以从另一个构造函数调用另一个函数吗? 问题答案: 可以,我知道的语法是 您还可以通过以下方式调用超类的构造函数 这两个调用只能作为构造函数中的第一条语句完成(因此,您只能在执行其他任何操作之前调用另一个构造函数)。