capypad
0 Tage Serie
java / expert
Snippet

Dynamische Invokation mit MethodHandles

MethodHandles sind der Kernmechanismus hinter 'invokedynamic'. Sie bieten eine performantere und typsicherere Alternative zur klassischen Reflection. Sobald ein MethodHandle verknüpft ist, kann die JVM den Aufruf ähnlich wie eine direkte Methodeninvoaktion optimieren.

snippet.java
java
1
2
3
MethodType mt = MethodType.methodType(String.class, char.class, char.class);
MethodHandle mh = MethodHandles.lookup().findVirtual(String.class, "replace", mt);
String result = (String) mh.invokeExact("hello", 'e', 'a');
Erklärung
1
MethodType.methodType(...)
Definiert die Signatur (Rückgabetyp und Parametertypen) für die Methodensuche.
2
findVirtual(String.class, "replace", mt)
Sucht die virtuelle Methode 'replace' in der String-Klasse passend zur Signatur.
3
mh.invokeExact(...)
Führt den Handle aus; 'exact' erfordert, dass die Argumente exakt der Signatur entsprechen.