为什么允许在注释中使用某些 Unicode 字符执行 Java 代码?
下面的代码生成输出“Hello World!(真的不行,试试吧)。
public static void main(String... args) {
// The comment below is not a typo.
// \u000d System.out.println("Hello World!");
}
这样做的原因是Java编译器将Unicode字符解析为新行并转换为:\u000d
public static void main(String... args) {
// The comment below is not a typo.
//
System.out.println("Hello World!");
}
从而导致注释被“执行”。
既然这可以用来“隐藏”恶意代码或任何邪恶的程序员可以想到的东西,为什么允许在评论中使用它呢?
为什么 Java 规范允许这样做?