【发布时间】:2010-10-16 07:22:38
【问题描述】:
Java 中的类/方法/变量名称是否有最大长度? JLS似乎没有提到这一点。我知道从代码可读性和可维护性的角度来看,很长的名称无论如何都是有问题的,但是出于好奇,存在一个限制(我猜类名可能会受到文件系统最大文件名限制的限制)。
【问题讨论】:
标签: java naming specifications name-length
Java 中的类/方法/变量名称是否有最大长度? JLS似乎没有提到这一点。我知道从代码可读性和可维护性的角度来看,很长的名称无论如何都是有问题的,但是出于好奇,存在一个限制(我猜类名可能会受到文件系统最大文件名限制的限制)。
【问题讨论】:
标签: java naming specifications name-length
如果我没记错的话,限制不是语言本身,而是类文件格式,它将名称限制为 64k,因此对于所有实际意图和目的而言,标识符长度不是问题。 具体来说,这是池中常量字符串的定义,似乎暗示最大长度为16位:
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
类名可能是文件系统的更多问题,我同意,我不确定当前支持什么。
【讨论】:
还发现了类似的问题(虽然它没有出现在我最初的搜索中,或者当我输入奇怪的问题标题时):Maximum Method Name Length
【讨论】:
如果你超过了 VM 对方法名称施加的大小限制,那么你会得到一个编译器错误(至少对于我正在使用的 javac 版本):
Main.java:1:字符串“aaaaaaaaaaaaaaaaaaaa...”的 UTF8 表示 对于常量池来说太长了
【讨论】: