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

在这个 coderanch链接上,我发现以下注释会给编译器错误: –

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

原因是,Unicode序列直接被它对应的实际字符所取代。 由于’\ u000a’对应于newLine字符,因此newLine位于找到’\ u000a’的位置。

我的问题是,“有没有其他方法因评论而出现编译错误?”

如果你在注释中定义了一个不推荐使用的函数( @deprecated ),那么你设置编译器在使用不推荐使用的方法时抛出错误(至少可以配置内部Eclipse编译器,AFAIK)

“编译器不仅会将Unicode转义转换为它们在将程序解析为令牌之前所代表的字符,而是在丢弃注释和空格之前[JLS 3.2]。” Java™Puzzlers:陷阱,陷阱和角落案例作者: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 
 /* Compiler Error due to this Unicode char '*/' */ 

此错误不是由注释本身引起的。 如果在代码中的其他位置使用相同的\u000a ,则会出现相同的错误。 例如:

 // This will give you a similar error char c = '\u000a'; 

转义序列在示例中的注释这一事实并不意味着注释是导致错误的原因。