javac 编译,得到"错误: 常量字符串过长",那么原因是什么呢?
其实,这个原因在 javac 的代码中是可以找到的,在 Gen 类中有如下代码:
private void checkStringConstant(DiagnosticPosition var1, Object var2) { if (this.nerrs == 0 && var2 != null && var2 instanceof String && ((String)v
ar2).length() >= 65535) { this.log.error(var1, "limit.string", new Object[0]);
++this.nerrs;
}
}
代码中可以看出,当参数类型为 String,并且长度大于等于 65535 的时候,就会导致编译失败。
这个地方大家可以尝试着 debug 一下 javac 的编译过程(视频中有对 java 的编译过程进行 debug 的方法),也可以发现这个地方会报错。
String如果我们尝试以 65534 个字符定义字符串,则会发现可以正常编译。
资料来源:《Java工程师成神之路(基础篇)》,链接:https://developer.aliyun.com/topic/download?id=923
"其实,这个原因在 javac 的代码中是可以找到的,在 Gen 类中有如下代码: private void checkStringConstant(DiagnosticPosition var1, Object var2) { if (this.nerrs == 0 && var2 != null && var2 instanceof String && ((String)v ar2).length() >= 65535) { this.log.error(var1, ""limit.string"", new Object[0]); ++this.nerrs; } } 代码中可以看出,当参数类型为 String,并且长度大于等于 65535 的时候,就会导致编译失败。 这个地方大家可以尝试着 debug 一下 javac 的编译过程(视频中有对 java 的编译过程进行 debug 的方法),也可以发现这个地方会报错。 String 如果我们尝试以 65534 个字符定义字符串,则会发现可以正常编译。 资料来源:《Java工程师成神之路(基础篇)》,链接:https://developer.aliyun.com/topic/download?id=923"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。