import static java.lang.invoke.MethodHandles.lookup; import java.lang.reflect.InvocationTargetException; import fr.umlv.nreflect.ReflectMirror; public class Main { private void foo(String s) { System.out.println("hello " + s); } private static void bar(String s) { System.out.println("hello " + s); } public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException { var foo = Main.class.getDeclaredMethod("foo", String.class); var fooMirror = ReflectMirror.mirror(lookup(), foo); System.out.println(fooMirror); var main = new Main(); fooMirror.invoke(main, "bob"); var bar = Main.class.getDeclaredMethod("bar", String.class); var barMirror = ReflectMirror.mirror(lookup(), bar); System.out.println(barMirror); barMirror.invoke(main, "anna"); } }