JDK7的Invokedymanic如何实现多态性
-
26-10-2019 - |
题
假设我在JVM 7上方实现动态键入语言,该语言支持 invokedynamic
在运行时链接方法的指令。
动态键入的语言具有函数 add
通过添加整数和串联来对其进行连接来对其进行连接。现在假设 add
由A调用A,例如,通用列表处理方法仅知道(在编译时)它保存对象,整数或字符串或两者兼而有之。
怎么能 invokedynamic
在编译JVM字节码的方法时,请在这里帮助我,因为它必须派遣到两个不同的内部函数,即添加整数的实际函数和串联字符串的实际函数?
解决方案
简而言之, invokedynamic
让您在不了解该方法所属的类的情况下调用具有给定签名的方法。如果你的 add()
方法只接受 Object
(或其他公共基本类型)作为参数,那么您可以拥有 add(Object)
许多原本无关的类中的方法, invokedynamic
将能够调用它们。只要目标对象具有该方法,就会被调用。
其他提示
您可能还会查看这些相关文章:
不隶属于 StackOverflow