LambdaMetaFactory

LambdaMetaFactory

Invocar el metodo getName()

public static void main(String[] args) throws Throwable {
Person person  = new Person(";Maria");

        MethodHandles.Lookup lookup = MethodHandles.lookup();
        CallSite site = LambdaMetafactory.metafactory(lookup,
                "apply",
                MethodType.methodType(Function.class),
                MethodType.methodType(Object.class, Object.class), // Function::apply signature
                lookup.findVirtual(Person.class, "getName", MethodType.methodType(String.class)),
                MethodType.methodType(String.class, Person.class) // Person::getName signature
        );

        Function<Person, String> getterFunction = (Function<Person, String>) site.getTarget().invokeExact();

//        System.out.println(getterFunction.apply(new Person("Ann")));
        System.out.println(getterFunction.apply(person));

    }

Persona.java

Last updated

Was this helpful?