方法将调用结果作为参数处理

时间:2018-03-13 21:34:14

标签: java methods

我有以下2个方法句柄:

MethodHandle intConcatenator = MethodHandles.publicLookup()
   .findStatic(Concat.class, "concat", MethodType.methodType(int.class, int.class, int.class));

MethodHandle randomIntProvider = MethodHandles.publicLookup()
   .findStatic(IntProvider.class, "provideRandom", MethodType.methodType(int.class));

是否可以创建一个不接受任何参数的MethodHandle,并且会两次执行randomIntProvider的调用并将其结果作为参数提供给intConcatenator?我可以这样做:

MethodHandle newConcatenator = MethodHandles.insertArguments(
           intConcatenator, 
           0, 
           randomIntProvider.invoke(), 
           randomIntProvider.invoke()
);

但问题是intConcatenator的论证在插入时被评估一次(但我想每次评估randomIntProvider,而不是仅在插入时评估一次。)

是否可以创建这样的MethodHandle

0 个答案:

没有答案