【问题标题】:How are anonymous classes compiled in Java?匿名类是如何在 Java 中编译的?
【发布时间】:2011-04-27 18:01:36
【问题描述】:

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

【问题讨论】:

    标签: java compiler-construction javac anonymous-class


    【解决方案1】:

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

    【讨论】:

    • $ 是有效字符,但不建议在用户自定义名称中使用。
    • 当你编译一个带有匿名内部类的类时,你可以很容易地看到这一点,因为你得到了多个*.class 文件,名称类似于EnclosingClass$n.class
    • 计数器是从 0 开始还是从 1 开始。它是从源文件的顶部到底部连续编号的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多