考虑以下两类:
// a.java
public class a
{
public static class $b
{
}
}
// a$.java
public class a$
{
public static class b
{
}
}
显然,由于内/嵌套类名字改编,一个$ .B和$ B都将被编译到一个名为$$ b.class类文件。 当命令javac a.java a$.java
被执行时,在Oracle的Java编译器(javac 1.7.0_45)产生以下输出:
a$.java:3: error: duplicate class: a.$b
public static class b
^
1 error
当它在Java语言规范中说,这些类名( a$.b
和a.$b
)冲突,或者这只是一个建立规则,由于具有相同名称的输出文件?