7得票2回答
LambdaMetaFactory与具体泛型类型的实现

我正在尝试使用Java的LambdaMetaFactory来动态实现一个泛型lambda,Handler<RoutingContext>: public class RoutingContext { // ... } @FunctionalInterface publi...

25得票5回答
使用MethodHandle查找最具体的重载方法

假设我有一个给定类型(类/接口)中的三个方法:public void foo(Integer integer); public void foo(Number number); public void foo(Object object); 我希望使用 MethodHandle 或反射,在运行...

16得票2回答
为什么我无法在这里使用.invokeExact(),即使MethodType是正确的?

我需要为我的一个项目实现动态构造函数调用。但由于使用的是Java 7,所以我使用java.lang.invoke而不是“传统”的反射API。 代码: @ParametersAreNonnullByDefault public class PathMatcherProvider { ...

9得票1回答
MethodHandles还是LambdaMetafactory?

在我的工作中,我们有一种DSL用于指定数学公式,然后将其应用到大量点(上百万)中。 截至今日,我们构建了一个公式AST,并访问每个节点以生成我们称之为“Evaluator”的结果。然后我们将该评估器传递给公式的参数,在每个点上进行计算。 例如,我们有以下公式:x * (3 + y) ...

25得票3回答
MethodHandle性能

我写了一个小基准测试,测试了java.lang.invoke.MethodHandle、java.lang.reflect.Method和直接调用方法的性能。 我看到MethodHandle.invoke()的性能几乎与直接调用相同。但是我的测试结果显示另一种情况:使用MethodHandl...

7得票2回答
如何使用varargs调用MethodHandle

我将尝试用MethodHandle替换反射调用,但是可变参数似乎很难处理。 我的反射调用器目前看起来像这样: public class Invoker { private final Method delegate; public Invoker(Method dele...

34得票2回答
为什么使用反射来访问类成员,而MethodHandle更快?

随着Java 7的发布,MethodHandle也随之问世。它允许用户像使用其底层字节码一样调用方法。特别地,MethodHandles.Lookup类提供了工厂方法来创建方法句柄以访问类成员: Lookup对象上的工厂方法对应于所有主要的方法、构造函数和字段用例。由工厂方法创建的每个...

13得票2回答
Java-7中的签名多态方法

据我所知,随着Java 7中MethodHandle的引入,编译器生成的方法重载也随之引入。 MethodHandle的javadoc(我已经删减了示例)说明如下: Here are some examples of usage: Object x, y; String s; int i...

58得票4回答
方法句柄 - 它到底是什么?

我正在学习JDK 1.7的新特性,但是我不明白MethodHandle的设计目的是什么?我理解(直接)调用静态方法(并使用Core Reflection API,在这种情况下很简单)。我也理解(直接)调用虚拟方法(非静态、非final)(并使用Core Reflection API,需要通过类...