methodhandle

    0热度

    1回答

    我正试图围绕如何有效地使用MethodHandles来解决我的大脑问题,有一件事让我想起了在调试过程中试图执行MethodHandles。 下面是一些说明我的问题的示例代码。 public class MetricianTest { public static void main(String[] args) throws Throwable { final MethodH

    5热度

    2回答

    如何获得像int[]::new这样的数组构造函数MethodHandle? 这不起作用: public static void main(String[] args) throws Throwable { MethodHandles.Lookup lookup = MethodHandles.publicLookup(); MethodHandle mh = lookup.fi

    6热度

    1回答

    我试图让Java 8 Nashorn具有完整源代码(未检测到)。如您所知,它使用Nasgen来修改.classes,并且输出以JRE/lib/ext/nashorn.jar发货。 在拆卸输出,使用javap: 0: aload_0 1: ldc #24 // String Function 3: ldc #31 // MethodHandle invokestatic

    1热度

    1回答

    在Java中使用的参数,我能够多方法处理每一它的参数相结合,这样的: foo(a, bar(2, b)) ..by使用MethodHandles.collectArguments()。 的方法处理,我得到可以这样调用: myHandle.invokeExact(5, 6); // invokes foo(5, bar(2, 6)) 但现在,我想获得一个方法搞定调度其参数到调用树是这样的:

    4热度

    2回答

    Java 8引入了lambda expressions,这是一件好事。但现在考虑重写这段代码: class B implements PropertyChangeListener { void listenToA(A a) { a.addPropertyChangeListener(this); } void propertyChange(Propert

    0热度

    1回答

    用Java 1.8.0_92试图运行MethodHandles的例子。 filterArguments(),下面的异常被抛出: Exception in thread "main" java.lang.invoke.WrongMethodTypeException: expected (String,String)String but found (String,String)Object

    0热度

    1回答

    假设您有MethodHandle并且已经指定了一些参数,如何在设置后更改这些参数? import static java.lang.invoke.MethodType.*; import static java.lang.invoke.MethodHandles.*; import java.lang.invoke.MethodHandle; import java.lang.invoke

    1热度

    1回答

    我就可得知用于捕获lambda表达式,存在需要的对象分配(它是Object[]或一些abc$Lambda$xyz类型)。无论如何可以自定义这个过程吗?比方说,我有这样的代码: private void test() { int x = 5; Supplier<Integer> supplier =() -> x; foo(supplier); // potential

    2热度

    1回答

    MethodHandle的Java文档说私有方法应该通过findSpecial.But调用,在以下示例中我可以通过findVirtual调用它。 有人请解释我在这里想念什么? import java.lang.invoke.MethodHandles; import java.lang.invoke.*; import java.lang.invoke.MethodType; publi

    1热度

    2回答

    在我的框架,我有这样一个类: public class Foo<B, V> { private final Method getterMethod; ... public V executeGetter(B bean) { try { return getterMethod.invoke(bean); } catch ...