我有以下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
?