gpt4 book ai didi

java - JDK7的invokedynamic如何实现多态

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:42 25 4
gpt4 key购买 nike

假设我在 JVM 7 之上实现一种动态类型语言,它支持 invokedynamic 指令在运行时链接方法。

动态类型语言有一个函数 add,它通过将整数相加来处理整数,通过连接它们来处理字符串。现在假设 add 由一个通用列表处理方法调用,该方法只知道(在编译时)它保存对象,整数或字符串或两者。

invokedynamic 在将方法编译为 JVM 字节码时如何帮助我,因为它必须分派(dispatch)到两个不同的内部函数,即添加整数的实际函数和连接字符串的实际函数?

最佳答案

简而言之,invokedynamic 让您可以在不知道方法所属类的情况下调用具有给定签名的方法。如果您的 add() 方法仅将 Object(或其他常见的基本类型)作为参数,那么您可以使用 add(Object)许多其他不相关的类中的方法,invokedynamic 将能够调用它们。只要目标对象有方法,就会被调用。

关于java - JDK7的invokedynamic如何实现多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7809772/

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