【问题标题】:Java. Instance variable length [duplicate]爪哇。实例可变长度[重复]
【发布时间】:2011-05-20 14:27:17
【问题描述】:

可能的重复:
Does Java have a limit on the class name length?
Max name length of variable or method in Java
Java.Variable name length.

我很笨,我知道,对不起...

我创建了这个问题Java.Variable name length, 但这里非常糟糕的例子...... 所以,我尝试创建新问题, 我有这门课:

class Test
{
int i=10;

public static void main(String args[])
{
System.out.println(new Test());
}}

其中变量名不是“i”而是“iiiiiii....”,长度为 65535 个字符(iiiiiiiiii...)

.class 文件与 .java 文件大小相同。 编译 - 成功。

但是,当 i>65535chars - Exception: UTF8 representation for string "iiiiiiiiiiiiiiiiiiii..." is too long for the constant pool

宾果游戏!

我们能得出什么结论?

无限长度 - 不是 100% 正确。

但我发现一些信息表明它的问题不是 java 语言 - 它是类文件的一些问题,所以有人知道:谁的问题?

【问题讨论】:

  • 我认为他的意思是,变量名不是 'i' 而是 'iiiiiii....',长度为 65535 个字符。
  • @Vladimir Ivanov, спасибо, дружище
  • 那么问题是什么?为什么你认为变量名的长度是无限的?
  • 因为,我读过文档:标识符是 Java 字母和 Java 数字的无限长度序列

标签: java exception variables


【解决方案1】:

这个问题似乎至少被问过几次(“Max name length of variable or method in Java”、“Does Java have a limit on the class name length?”)。

最好的答案似乎是,虽然 Java 语言规范没有对常量、类或变量名进行限制,但 Java 虚拟机规范(特别是类文件格式)规定了 65535 个字符的限制。请参阅 JVM 规范的 section 4.10,最后一个项目符号。

【讨论】:

    【解决方案2】:

    好的。我们不能命名超过 65534 个字符的变量。但谁在乎?

    【讨论】:

    • 好吧,当然,you 可以使用 cmets,但 my 代码会记录自身...以及其他所有内容。
    • @Reese Moore,每个变量名需要超过 65535 个字符?
    • 讽刺,这是一个关于“自我记录”代码有时可以持续多长时间的笑话(此时它比使用好的旧注释更难理解)。
    • @Reese Moore,哦……我明白了。在这种情况下,这是一个很好的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多