一种具有已知签名但是是动态类型的方法

所以我最近一直非常喜欢字节码,我想学习如何使用invokedynamic。 我已经想通过invokedynamic链接一个静态方法,但我有一个更具体的用例。 我要:

  • 将一个任意对象传递给一个方法(该对象具有一个我想调用的预定方法签名,但该类型不能继承接口或容易确定。)
  • 然后该方法应该在该对象上调用dynamic,并调用给定的方法
  • 目前我的引导方法如下所示:

    public static CallSite bootstrap(MethodHandles.Lookup caller, String name, MethodType methodType) throws Throwable {
        return new ConstantCallSite(MethodHandles.lookup().findVirtual(null, name, methodType));
    }
    

    哪里空是我不知道的。 我基本上试图在对象上调用虚拟,但绕过检查来查看方法是否真的存在(因为对象的静态绑定类型将是Object)。 (因为invokevirtual-ing会在我传入一个类时抛出一个错误,并且一个方法不在那个类中)。

    任何帮助表示赞赏!

    编辑:基本上我试图实现一种鸭子打字。

    链接地址: http://www.djcxy.com/p/63465.html

    上一篇: ing a method with a known signature, but dynamic type

    下一篇: When is invokedynamic actually useful (besides lazy constants)?