import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
class Tmp {
Object[] methodArgs
= { "hello",
42 };
var mh = MethodHandles.lookup()
.
findVirtual(Tmp.
class,
"method", MethodType.
methodType(void.
class,
String.
class,
int.
class));
mh
= mh.
asSpreader(Object[].
class, mh.
type().
parameterCount() - 1);
mh.invokeExact(new Tmp(), methodArgs);
}
public void method
(String s,
int i
) { System.
out.
println("Tmp.method(): " + s
+ ", " + i
); }
}
aW1wb3J0IGphdmEubGFuZy5pbnZva2UuTWV0aG9kSGFuZGxlczsKaW1wb3J0IGphdmEubGFuZy5pbnZva2UuTWV0aG9kVHlwZTsKCmNsYXNzIFRtcCB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgVGhyb3dhYmxlIHsKICAgICAgICBPYmplY3RbXSBtZXRob2RBcmdzID0geyAiaGVsbG8iLCA0MiB9OwogICAgCiAgICAgICAgdmFyIG1oID0gTWV0aG9kSGFuZGxlcy5sb29rdXAoKQogICAgICAgICAgICAuZmluZFZpcnR1YWwoVG1wLmNsYXNzLCAibWV0aG9kIiwgTWV0aG9kVHlwZS5tZXRob2RUeXBlKHZvaWQuY2xhc3MsIFN0cmluZy5jbGFzcywgaW50LmNsYXNzKSk7CiAgICAKICAgICAgICBtaCA9IG1oLmFzU3ByZWFkZXIoT2JqZWN0W10uY2xhc3MsIG1oLnR5cGUoKS5wYXJhbWV0ZXJDb3VudCgpIC0gMSk7CiAgICAKICAgICAgICBtaC5pbnZva2VFeGFjdChuZXcgVG1wKCksIG1ldGhvZEFyZ3MpOwogICAgfQogIAogICAgcHVibGljIHZvaWQgbWV0aG9kKFN0cmluZyBzLCBpbnQgaSkgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG1wLm1ldGhvZCgpOiAiICsgcyArICIsICIgKyBpKTsKICAgIH0KfQo=