所以我最近一直在使用字节码,我想学习如何使用invokedynamic。我已经想出如何通过invokedynamic链接静态方法,但我有一个更具体的用例。我想:
目前我的bootstrap方法如下所示:
public static CallSite bootstrap(MethodHandles.Lookup caller, String name, MethodType methodType) throws Throwable {
return new ConstantCallSite(MethodHandles.lookup().findVirtual(null, name, methodType));
}
null是我不确定的地方。我基本上试图在对象上调用虚拟,但绕过检查以查看该方法是否实际存在(因为对象的静态绑定类型将是Object)。 (因为如果我传入一个类,并且一个方法不在该类中,invokevirtual-ing将抛出错误。)
任何帮助表示赞赏!
编辑:基本上我正在尝试实现排序的鸭子打字。