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