44

Java 中的类/方法/变量名称是否有最大长度?JLS似乎没有提到这一点。从代码可读性和可维护性的角度来看,我知道很长的名称无论如何都是有问题的,但是出于好奇,存在一个限制(我猜类名可能受到文件系统最大文件名限制的限制)。

4

3 回答 3

38

如果我没记错的话,限制不在语言本身,而是在类文件格式中,它将名称限制为 64k,因此对于所有实际意图和目的而言,标识符长度不是问题。具体来说,这是池中常量字符串的定义,似乎暗示最大长度为 16 位:

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

类名可能是文件系统的更多问题,我同意,我不确定当前支持什么。

于 2009-03-30T03:53:16.200 回答
27

JLS: 标识符是Java 字母和Java 数字的无限长度序列,其中第一个必须是Java 字母。

还发现了类似的问题(虽然它没有出现在我的初始搜索中,或者当我输入奇怪的问题标题时):Maximum Method Name Length

于 2009-03-30T03:54:37.243 回答
11

如果您超过了 VM 对方法名称施加的大小限制,那么您会收到编译器错误(至少对于我正在使用的 javac 版本):

Main.java:1:字符串“aaaaaaaaaaaaaaaaaa...”的 UTF8 表示对于常量池来说太长了

于 2009-03-30T05:30:43.610 回答