当前位置: 首页 > 知识库问答 >
问题:

Java类可以具有的最大字段数是多少?

公风史
2023-03-14

java类或关联对象实例可以拥有的字段数量是否有限制?如果有,限制是什么?

我明确地问的是字段,而不是这个问题中所问的方法:一个Java类可以拥有的最大方法数是多少?

共有2个答案

柳德义
2023-03-14

在JVM规范中,它说:

一个类或接口可以声明的字段数量受类文件结构中字段计数项的大小限制为65535个(§4.1)

柳灿
2023-03-14

类文件格式包含一个字段声明列表,其大小为无符号短,因此可以允许65535个声明,但实际上不可能声明65535个字段。

每个字段必须具有唯一的名称和类型组合,这些名称和类型存储在类的常量池中,该池最多只能容纳65534个条目,但还将包含描述当前类及其超类和属性名称等特性的常量。类中每一个需要专用常量条目的特性都会减少声明字段的可能数量。

因此,对于要求所有字段都有唯一名称的Java源代码,不可能在一个类中声明那么多字段。使用手工编制的字节码,可以利用名称不必唯一的事实来声明65535个字段,但不能在同一个类中使用所有字段,因为访问字段需要一个描述唯一组合的“名称和类型”条目,加上一个指向“name and type”条目和声明类的字段描述符。

但是请记住,类可以从超类继承字段。

 类似资料:
  • 问题内容: 我知道这可能是一个非常笨拙的问题,但是我没有找到可以获取此信息的可靠可靠资源。 在Android应用程序中,我试图通过继续向其添加更多数据来将数据保留在String中。最后,当用户关闭应用程序或单击“保存按钮”时,我将其登录到数据.csv文件中。 我想知道一个简单的String在Java中可以容纳多少数据? ,这样,即使String数据类型用完分配的内存,应用也不会崩溃。顺便说一句,我

  • 问题内容: 我使用下面的代码来测试pthread_create函数可以创建的最大线程数。 输出为: 那是pthread_create函数可以创建的最大线程数吗? 此外,我使用以下命令查看系统允许的最大线程数: 号码是772432。 为什么我的程序输出不等于值? 我的操作系统是Fodaro 16,具有12核,48G RAM。 问题答案: 每个线程堆栈的默认大小是在测试中人为施加的限制。当分配给进程的

  • 问题内容: 我有一个包含三个字段(所有字符串类型)的“报告”对象列表- 我有一个排序代码,就像 由于某种原因,我没有排序顺序。一个建议在字段之间放置空格,但是为什么呢? 你认为代码有什么问题吗? 问题答案: 你认为代码有什么问题吗? 是。为什么在比较它们之前将三个字段加在一起? 我可能会做这样的事情:(假设字段按照你希望对其进行排序的顺序)

  • A文件是一种有很好文档记录的格式,它定义了节和大小,因此也定义了最大大小。 例如,a文件包含一个幻数(4字节)、一个版本(4字节)、常量池(可变大小)等。但大小可以在多个级别上定义:可以有65535个方法,每个方法限制为65535字节。 其他限制是什么?如果你想做最大的文件可能是什么大小? 如果需要,限制对Java的回答。意思是如果Scala或Clojure(或…)改变一些限制,忽略这些值。

  • 问题内容: 我做了以下工作,一段时间后出现了stackoverflow错误,我知道为什么会这样。 但是,如果我没有在构造函数中创建新的Cat对象,而是采用Cat类型的参数并将其分配给insideCat字段,该怎么办? 我只是在玩弄代码,只是试图找出Java可以做什么和不能做什么。在第二个代码中,一切看起来都很正常,直到我开始测试该类为止。我需要一个Cat对象来创建Cat对象(要创建这个Cat对象,

  • 问题内容: 我正在考虑构建一个非常大的Java类,Java类可以具有的方法数量是否有限制?它可以用于数百万种方法吗? 更新:是的,目的是制作“神”类。 问题答案: 根据Java类文件规范,限制为 65535 : 4.10 Java虚拟机的局限性 文件格式隐含了Java虚拟机的以下限制: 一个类或接口可以声明的方法的数量由该结构项的大小限制为65535 (第4.1节)。请注意,结构项的值不包括从超类