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
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.