Java对类名长度有限制吗?

Posted

技术标签:

【中文标题】Java对类名长度有限制吗?【英文标题】:Does Java have a limit on the class name length? 【发布时间】:2010-11-05 13:24:16 【问题描述】:

这个问题出现在 Spring 类中,它有一些相当长的类名。类名长度的语言有限制吗?

【问题讨论】:

【参考方案1】:

Java Language Specification 声明标识符的长度不受限制。

但实际上,文件系统会限制生成的文件名的长度。

【讨论】:

Java VM 规范规定任何常量字符串都限制为 65535 字节:java.sun.com/docs/books/jvms/second_edition/html/… 这是来自第二版(与乔恩的回答相同)。第三版中没有这样的参考。 当前链接已损坏【参考方案2】:

我相信有 65535 个字符。来自Java虚拟机规范:

字段和方法名的长度, 字段和方法描述符,以及 其他常量字符串值是 限制为 65535 个字符 的 16 位无符号长度项 CONSTANT_Utf8_info 结构(第 4.4.7 节)。 请注意,限制在数量上 编码中的字节数,而不是 编码字符的数量。 UTF-8 使用编码一些字符 两个或三个字节。因此,字符串 合并多字节字符是 进一步限制。

这里:

https://docs.oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html#88659

【讨论】:

第三版有这样的参考吗?我找不到。 65535 是 JVM 而不是语言本身的限制 我在 JLS 第三版中找不到正确的部分。谁能提供更多信息? 这是 VM 规范第 4.10 章的最后一点:java.sun.com/docs/books/jvms/second_edition/html/… 对于 Java 8:docs.oracle.com/javase/specs/jvms/se7/html/…【参考方案3】:

在 JDK 1.5 中,Windows XP 上类名的实际限制为 255——更长的名称会导致文件系统出错。这是全名(目录+包+类)。

我还没有在 Vista 或 windows 7 上尝试过 JDK 1.6,希望 Sun 将其修复为 NTFS 限制为 8000 左右。

【讨论】:

有人知道 JDK 1,6+ 的答案吗?【参考方案4】:

没有。 Java 对类名没有任何限制。但是,如果您与其他系统(例如 JNI)进行交互,最好还是安全一点。

【讨论】:

这被称为未定义的行为,是任何规范的坏部分))

以上是关于Java对类名长度有限制吗?的主要内容,如果未能解决你的问题,请参考以下文章

Post 提交,参数长度有限制吗

post的参数传递长度有限制吗

post或get方式提交数据数量及长度有限制吗?

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

虎牙面试官:String长度有限制吗?是多少?我:这太...

mysql关于行长度有限制吗