Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中变量或方法的最大名称长度_Java_Naming_Specifications_Name Length - Fatal编程技术网

Java中变量或方法的最大名称长度

Java中变量或方法的最大名称长度,java,naming,specifications,name-length,Java,Naming,Specifications,Name Length,Java中的类/方法/变量名是否有最大长度?JLS似乎没有提到这一点。从代码可读性和可维护性的角度来看,我知道很长的名称是有问题的,但出于好奇,是否存在限制(我想类名可能会受到文件系统最大文件名限制)。如果我没有弄错的话,限制不是语言本身,而是类文件格式,这将名称限制为64k,因此对于所有实际意图和目的,标识符长度都不是问题。 具体来说,这是池中常量字符串的定义,这似乎意味着最大长度为16位: CONSTANT_Utf8_info { u1 tag; u2 length;

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

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

CONSTANT_Utf8_info {
    u1 tag;
    u2 length;
    u1 bytes[length];
}
类名可能是文件系统的一个更大的问题,我同意,我不确定当前支持什么

JLS:


还发现了类似的问题(虽然在我最初的搜索中没有出现,或者在我键入了奇怪的问题标题时):

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


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


这是针对语言的,但是类文件格式更严格。这实际上相当令人惊讶,考虑到该语言是为类文件编译的…是的,我想知道如果你真的尝试为字符串“aaaaaaaaaaaaaa…”创建一个长得离谱的变量名称main.java:1:UTF8表示会发生什么对于常量poolNo来说太长了,因为问题是关于Java语言,而不是该语言的编译器的一些实现,即使该编译器恰好是引用实现。