如何为具有variant参数的方法构造MethodType

时间:2015-01-29 01:33:11

标签: java dynamic-invoke dependent-method-type

我无法为Java中的方法查找创建MethodType。以下是我的代码。在这段代码中,我想为sample :: gwd方法创建一个MethodType,然后通过lookup()。findStatic检索对该函数的引用。显然我无法获取方法引用,因为MethodType是错误构造的。

//I want to construct MethodType for Sample:gwd method, but do not know how to handle array parameters for 'gwd' method
MethodType mt = MethodType.methodType(Object.class, MethodHandle.class, MethodHandle.class, MethodHandle.class);

MethodHandle myMH = MethodHandles.lookup().findStatic(Sample.Class, "gwd", mt);

public class Sample
{
    public static Object gwd(MethodHandle methodhandle, MethodHandle methodhandle1, MethodHandle methodhandle2, Object aobj[])
        throws Throwable
    {  ..........   }
}

任何人都可以提供帮助吗?谢谢

1 个答案:

答案 0 :(得分:0)

你非常接近,你传递给MethodType的{​​{1}}缺少最后一个参数,MethodHandles#lookup数组。这就是你需要的:

Objects

顺便说一句,如果MethodType mt = MethodType.methodType(Object.class, MethodHandle.class, MethodHandle.class, MethodHandle.class, Object[].class); 使用varargs而不是最终数组,这也是您需要的。