栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中的符号引用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的符号引用

如果您引用给您带来麻烦的文档的确切内容,将很有帮助。既然您还没有,我将猜测一下ldc的文档中您可能引用的内容:

否则,如果运行时常量池条目是对类的符号引用(第5.1节),则将解析命名的类(第5.4.3.3.1节),并将对表示该类值的Class对象的引用压入操作数堆栈。

否则,运行时常量池条目必须是对方法类型或方法句柄的符号引用(第5.1节)。…

此引用具有指向JVM规范(5.1)的另一部分的链接,该部分描述了运行时常量池:

一种运行时数据结构,可满足常规编程语言实现的符号表的许多目的

这意味着运行时常量池以符号形式包含有关类片段的信息:作为文本值。

因此,当

ldc
给一个类的“符号引用”时,它就给定
CONSTANT_Class_info
了常量池中结构的索引。如果查看此结构的定义,您会发现它包含对类名的引用,该类名也保存在常量池中。

TL; DR: “符号引用”是可用于检索实际对象的字符串。


一个例子:

if (obj.getClass() == String.class) {    // do something}

变为以下字节码:

aload_1invokevirtual   #21; //Method java/lang/Object.getClass:()Ljava/lang/Class;ldc     #25; //class java/lang/Stringif_acmpne       20

在这种情况下,该

ldc
操作引用的是符号存储的类。JVM执行此操作码时,它将使用符号引用来标识当前类加载器中的实际类,并返回对类实例的引用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454354.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号