Maximum number of enum elements in Java(Java中的最大枚举元素数)
问题描述
Java 中枚举中允许的最大元素数是多少?
What is the maximum number of elements allowed in an enum in Java?
我想找出 switch 语句中的最大 case 数.由于 switch 中允许的最大原始类型是 int,因此我们有从 -2,147,483,648 到 2,147,483,647 的情况和一种默认情况.但是也允许使用枚举...所以问题..
I wanted to find out the maximum number of cases in a switch statement. Since the largest primitive type allowed in switch is int, we have cases from -2,147,483,648 to 2,147,483,647 and one default case. However enums are also allowed... so the question..
推荐答案
来自 类文件格式规范:
ClassFile 结构(第 4.1 节)的 16 位 constant_pool_count 字段将每个类或每个接口的常量池限制为 65535 个条目.这作为对单个类或接口的总复杂性的内部限制.
The per-class or per-interface constant pool is limited to 65535 entries by the 16-bit constant_pool_count field of the ClassFile structure (§4.1). This acts as an internal limit on the total complexity of a single class or interface.
我相信这意味着在一个类中不能有超过 65535 个命名的事物",这也会限制枚举常量的数量.
I believe that this implies that you cannot have more then 65535 named "things" in a single class, which would also limit the number of enum constants.
如果看到一个有 20 亿个案例的开关,我可能会杀死任何接触过该代码的人.
If a see a switch with 2 billion cases, I'll probably kill anyone that has touched that code.
幸运的是,这不可能发生:
Fortunately, that cannot happen:
每个非本地、非抽象方法的代码量被限制为 65536 字节,这取决于 Code 属性 (§4.7.3) 和 LineNumberTable 属性 (§4.7.8) 中的 exception_table 中的索引大小) 和 LocalVariableTable 属性 (§4.7.9).
The amount of code per non-native, non-abstract method is limited to 65536 bytes by the sizes of the indices in the exception_table of the Code attribute (§4.7.3), in the LineNumberTable attribute (§4.7.8), and in the LocalVariableTable attribute (§4.7.9).
这篇关于Java中的最大枚举元素数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java中的最大枚举元素数


- Java包名称中单词分隔符的约定是什么? 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01