java - 由于 Java 中的合法注释中的内容而导致的错误

标签 java unicode compiler-errors

关于 this coderanch链接,我发现下面的注释会给编译器报错:-

// Compiler Error due to this Unicode char '\u000a'

原因是,Unicode 序列被直接替换为它对应的实际字符。由于'\u000a'对应于换行符,所以在找到'\u000a'的地方放置一个换行符。

我的问题是,“是否有任何其他方式因评论而导致编译错误?”

最佳答案

“编译器不仅在将程序解析为标记之前将 Unicode 转义符转换为它们所代表的字符 [...],而且在丢弃注释和空格之前也会这样做 [JLS 3.2]。” Java™ 谜题:陷阱、隐患和边角案例,作者:Joshua Bloch、Neal Gafter。

接下来的几行是有效的 Java 代码:

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d

关于java - 由于 Java 中的合法注释中的内容而导致的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225124/

相关文章:

java - 如何为tomcat编译servlet和现有包

java - 从生产者到消费者的可靠文件移交

MySQL 仅在某些情况下返回不正确的 UTF8 扩展字符

c++ - 不打印 5 个字母长的 unicode

c# - 'System.Net.Http.ObjectContent <T>'不包含带有2个参数的构造函数

java - 出现错误,但我不确定它们的含义

java - Eclipse:如何使用外部 jar 构建可执行 jar?

java - 如何在非模块化应用程序中使用模块化 jar?

unicode - 字节长度不能被 2 整除的 UTF-16 字符串是否总是无效?

webkit - 在Windows上编译Webkit : environment variable not found $(PRODUCTION)