Quantcast
Channel: Active questions tagged methodhandle - Stack Overflow
Browsing latest articles
Browse All 30 View Live

MethodHandle - What is it all about?

I am studying new features of JDK 1.7 and I just can't get it what MethodHandle is designed for? I understand (direct) invocation of the static method (and use of Core Reflection API that is...

View Article



Why use reflection to access class members when MethodHandle is faster?

With the release of Java 7 came the MethodHandle, which allows a user to invoke a method as if using its underlying bytecode. In particular, the MethodHandles.Lookup class provides factory methods to...

View Article

How to mimic `tableswitch` using `MethodHandle`?

Context: I've been benchmarking the difference between using invokedynamic and manually generating bytecode (this is in the context of deciding whether a compiler targeting the JVM should emit more...

View Article

MethodHandle cast return type

I try to link methods together through methodhandles, some of them are from generic types. If a function returns a generic type I have to specify Object.class for the MethodType but I see no easy way...

View Article

LambdaMetaFactory boxing / unboxing parameters and return types

I've got the following two methods: public static <T, R> IGetter<T, R> createGetterViaMethodname( final Class<T> clazz, final String methodName, final Class<R> fieldType )...

View Article


Constants that use other constants in Java

In my class, I need both an SLF4J Logger with the class as the parameter, as well as a simple class name. Both the logger and CLASS_NAME constants use MethodHandles.lookup(). I was wondering if it...

View Article

LambdaMetaFactory and Private Methods

I would like to use LambdaMetaFactory to efficiently access a private method.public class Foo { private void bar() { // here's what I want to invoke System.out.println("bar!"); }}I know it is not a...

View Article

How to change MethodHandle arguments after being inserted?

Suppose you have MethodHandle and some arguments have been specified, how to change those arguments after being set?import static java.lang.invoke.MethodType.*;import static...

View Article


Fastest way to invoke method handle fields

I'm generating bytecode roughly equivalent to a class like:final class MyCls { final MethodHandle handle1; final MethodHandle handle2; // and so on // This needs to invoke `handle1`, `handle2`, etc. in...

View Article


Transform non-direct MethodHandle to instance of interface

there is a possibility to transform MethodHandle to the instance of LambdaForm via:LambdaMetaFactory.metafactory() and invoke it via invokeinterface call. I know that it is possible to make it for...

View Article

Java 8 | Using MethodHandle#invokeExact on fields dynamically

My goal is to create a MethodHandle that, by passing a class and a field name, reads that field with a MethodHandle getter and returns the value.With this method I wanted to return an arbitrary...

View Article

Why does LambdaMetafactory fail when using a custom functional interface (but...

Given:import java.lang.invoke.LambdaMetafactory;import java.lang.invoke.MethodHandle;import java.lang.invoke.MethodHandles;import java.lang.invoke.MethodType;import java.util.function.Function;class...

View Article

Why a WrongMethodTypeException from MethodHandle? Is my object type incorrect?

I have encountered a problem while I am trying to switch my event system from reflection to MethodHandle.I am using an event bus (version 3.0.0) by KyoriPowered on Github...

View Article


Javassist call PolymorphicSignature method

I am trying to call MethodHandle.invokeExact in a generated Javassist method, but I always get Exception in thread "main" javassist.CannotCompileException: [source error] invokeExact(int) not found in...

View Article

What?! 3 vs 36 MiB for a no-op 254-ary method call via a method handle

It could be shown (see below a rewritten test case) that method handles for 254-ary methods claim less memory in Java 17 than in Java 11, when compiled and run by its tools.Since no method-handle- or...

View Article


Can't load hidden class with VarHandle

I am trying to load a class as a hidden class in Java, but run into a VerifyError. The class uses a VarHandle, which has a PolymorphicSignature. I believe the error is implying that the polymorphic...

View Article

android doesn't check called MethodHandle type in java.lang.invoke.Transformers

This strange behavior allows you to call methods with the wrong typeFor example:static void test(Integer v) { System.out.println("test " + (Object)v);}MethodHandle test =...

View Article


LambdaMetaFactory with Generic Static Methods?

So I'm creating a library that allows users to pass a Class<?> and collect all static methods with a specific annotation (and other criteria, such as a certain parameter count and types) and...

View Article

How to get around IllegalAccessError when creating a MethodHandle from...

I am trying to get a MethodHandle for any of the constructors of the com.sun.tools.javac.code.TypeMetadata.Annotations record on JDK 21. Here is the source code of TypeMetadata (from...

View Article

WrongMethodTypeException with MethodHandle.invokeExact() but no arguments and...

I'm using Java 17 on AWS Lambda. I have an interface Foo with a method bar(), returning a CompletableFuture<Map<Bar, Long>>:public interface Foo { public CompletableFuture<Map<Bar,...

View Article

"Cannot cast [Ljava.lang.Object;" passing Object[] to Object... varargs

I'm struggling with a simple, fundamental Java language question that isn't making sense. I'm passing an Object[] to a method which expects varargs Object..., but the method seems to be interpreting...

View Article


MethodHandle cannot be cracked when using LambdaMetafactory?

I want to convert a Record's constructor to a Function<Object[], T> using lambdametafactory (T is a generic type), here are my codes:public record R( String a, String b) {}private static void...

View Article


`MethodHandle` slower than Reflection when accessing primitive

I would like to call a method via reflection in the most performant way possible.The method returns a primitive long.I've implemented this using both reflection and MethodHandles.I was expecting...

View Article

`MethodHandle` slower than Reflection when accessing Object

I would like to call a method via reflection in the most performant way possible.The method returns an Object.I've implemented this using both reflection and MethodHandles, I was expecting MethodHandle...

View Article

Java poor performance with non-static `VarHandle`

I was investigating if replacing a java.lang.reflect.Field.get call with a VarHandle would improve performance, but instead it got slower.From benchmarking, I can see that when the VarHandle is static,...

View Article


Is there a problem with the javadoc for MethodHandles#exactInvoker?

I'm trying to understand the exactInvoker javadoc.It reads, in part:For example, to emulate an invokeExact call to a variable method handle M, extract its type T, look up the invoker method X for T,...

View Article

What does “MethodHandle::invoke” mean in Java? [duplicate]

Look the follow code:import java.lang.invoke.MethodHandle;public class Demo { interface TFunction<T, R> { R apply(T t) throws Throwable; } public class MyMethodHandle { public final native Object...

View Article

BootstrapMethodError caused by LambdaConversionException caused by using...

I was trying to check if it is possible to use MethodHandle::invoke or MethodHandle::invokeExact as method references for a functional interface that accepts a MethodHandle and returns a generified...

View Article

lambdametafactory creation is quite slow compared to just using lambda

@Benchmarkpublic void testLambdaGeneration(Blackhole bh) { Function<Object, Object> function = a -> { if(a instanceof Alpha alpha) { return alpha.primitiveInt(); }else { throw new...

View Article



Build error "com.android.tools.r8.internal.k2: MethodHandle.invoke and...

I have a module within my app that depends on org.tensorflow:tensorflow-lite:2.15.0 library. This library in turn depends on com.google.inject:guice:5.1.0 which is the source of the build error.Below...

View Article
Browsing latest articles
Browse All 30 View Live




Latest Images