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

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

【问题讨论】:

    标签: java name-length


    【解决方案1】:

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

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

    【讨论】:

    【解决方案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

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 有人知道 JDK 1,6+ 的答案吗?
    【解决方案4】:

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

    【讨论】:

    • 这被称为未定义的行为,是任何规范的坏部分))
    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 2015-03-21
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多