gpt4 book ai didi

java - 匿名内部类在系统中是如何识别的?

转载 作者:行者123 更新时间:2023-11-30 05:50:29 25 4
gpt4 key购买 nike

JVM 如何创建和识别匿名内部类?

例如,我可以为同一个接口(interface)创建多个匿名内部类,每个内部类都有自己独特的实现。并且这些可以都在同一个(显式)类中,因此它所在的类不能是整个标识符。那么 JVM 使用什么信息来区分一个匿名对象和另一个呢? (我唯一能想到的是声明它的行号,但这似乎有点太人性化了,不是真正的答案。)

有没有办法查看编译器为这些生成的.class 文件?或者它们是在运行时动态创建的?

最佳答案

Java代码:

   public static void main(String...args) {
TestInter t = null;
t = new TestInter() { //com/next/b/Test$1
};
t= new TestInter() { //com/next/b/Test$2
};
}

字节码:

 L0
LINENUMBER 8 L0
ACONST_NULL
ASTORE 1
L1
LINENUMBER 9 L1
NEW com/nextcontrols/bureautest/Test$1
DUP
INVOKESPECIAL com/next/b/Test$1.<init>()V
ASTORE 1
L2
LINENUMBER 11 L2
NEW com/nextcontrols/bureautest/Test$2
DUP
INVOKESPECIAL com/next/b/Test$2.<init>()V
ASTORE 1

注意字节码中的INVOKESPECIAL

关于java - 匿名内部类在系统中是如何识别的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com