【发布时间】:2010-11-05 13:24:16
【问题描述】:
这个问题出现在 Spring 类中,它有一些相当长的类名。类名长度的语言有限制吗?
【问题讨论】:
标签: java name-length
这个问题出现在 Spring 类中,它有一些相当长的类名。类名长度的语言有限制吗?
【问题讨论】:
标签: java name-length
Java Language Specification 声明标识符的长度不受限制。
但实际上,文件系统会限制生成的文件名的长度。
【讨论】:
我相信有 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
【讨论】:
在 JDK 1.5 中,Windows XP 上类名的实际限制为 255——更长的名称会导致文件系统出错。这是全名(目录+包+类)。
我还没有在 Vista 或 windows 7 上尝试过 JDK 1.6,希望 Sun 将其修复为 NTFS 限制为 8000 左右。
【讨论】:
没有。 Java 对类名没有任何限制。但是,如果您与其他系统(例如 JNI)进行交互,最好还是安全一点。
【讨论】: