Java中方法、字段名的最大长度是多少?

298

由于Class文件中方法、字段等都需要引用 CONSTANT_Utf8_info 型常量来描述名称,所以 CONSTANT_Utf8_info 型常量的最大长度也就是 Java 中方法、字段名的最大长度。

我们来看看 CONSTANT_Utf8_info 的数据结构:

CONSTANT_Utf8_info {
    u1 tag;
    u2 length;
    u1 bytes[length];
}

我们重点关注下长度为 length 的那个 bytes 数组,这个数组就是真正存储常量数据的地方,而 length 就是数组可以存储的最大字节数。

length 的类型是 u2u2 是无符号的 16 位整数,因此允许的的最大长度是 2^16-1=65535

所以 Java 程序中如果定义了超过 65535 个(约等于 64KB )英文字符的变量或方法名,即使规则和全部字符都是合法的,也会无法编译。