匿名类是如何用Java编译的?

匿名类是如何用Java编译的?,java,compiler-construction,javac,anonymous-class,Java,Compiler Construction,Javac,Anonymous Class,我听说Java字节码实际上不支持任何类型的未命名类。javac如何将未命名的类转换为命名的类?它合成了一个形式为EnclosingClass$n的名称,其中“n”是EnclosingClass中匿名类的计数器。由于不鼓励在标识符中使用$,因此这些名称不应与任何用户指定的名称冲突。$是一个有效字符,但不建议在用户定义的名称中使用它。在编译具有匿名内部类的类时,您可以很容易地看到这一点,因为您会获得多个*.class文件,如果名称为EnclosingClass$n.class,计数器是从0开始还是从

我听说Java字节码实际上不支持任何类型的未命名类。javac如何将未命名的类转换为命名的类?

它合成了一个形式为
EnclosingClass$n
的名称,其中“n”是
EnclosingClass
中匿名类的计数器。由于不鼓励在标识符中使用
$
,因此这些名称不应与任何用户指定的名称冲突。

$
是一个有效字符,但不建议在用户定义的名称中使用它。在编译具有匿名内部类的类时,您可以很容易地看到这一点,因为您会获得多个
*.class
文件,如果名称为
EnclosingClass$n.class
,计数器是从0开始还是从1开始。它是从源文件的顶部到底部连续编号的吗?