Java五大invoke指令

更新时间:2023-07-14 15:47:44 阅读: 评论:0

Java五⼤invoke指令fn键
  java⾥的五⼤invoke指令分别是invokespecial、invokevirtual、invokestatic、invokeinterface、invokedynamic。
  静态⽅法的调⽤,⽣成的是invokestatic指令。
小学语文论文题目
  接⼝⽅法的调⽤,⽣成的是invokeinterface指令。
  其他的⽅法,区别在于⾮final的⽅法⽣成invokevirtual指令,final⽅法则⽣成invokespecial指令,这是java保证多态的关键。私有⽅法都是final⽅法。 特殊的地⽅还有super关键字⽅法调⽤,⽣成invokespecial指令。
  最复杂的当属于invokedynamic指令了,其⽬的是实现动态类型。众所周知,java是⼀种静态类型语⾔。举个例⼦,python可以这样写代码:
带有春的成语
lass A:
def print(lf):
print('A')贱货母狗
class B:
北京新光天地def print(lf):
print('B')
在爱的世界里def f(x):
怎么往u盘下载歌曲x.print()
if __name__ =='__main__':
# 取命令⾏参数
f(A())
情感口述实录
f(B())
  如果换成java,这两个类就必须实现同⼀个接⼝。但是现在java也可以了,JDK7引⼊的invokedynamic指令就可以实现这种动态类型,但是JDK7的java语法并不⽀持,只有JVM上动态语⾔⽐如closure、kotlin、Scala等语⾔提供了⽀持。但是到了JDK8,lambda表达式的出现使得java编译
器可以⽣成invokedynamic指令。这个指令底层依靠methodhandle来实现,其实现原理超级复杂。但简⽽⾔之,就是把callsite传给invokedynamic指令,从call site中找到bootstrap method来调⽤真正的⽅法。

本文发布于:2023-07-14 15:47:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1096364.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指令   实现   类型   出现   使得   题目   多态   还有
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图