java - 调试期间调用 MethodHandle

标签 java intellij-idea reflection methodhandle

我正在努力思考如何有效地使用 MethodHandles,让我失望的一件事是尝试在调试期间执行 MethodHandles。 这是一些示例代码,说明了我的问题。

 public class MetricianTest {

    public static void main(String[] args) throws Throwable {
        final MethodHandles.Lookup lookup = MethodHandles.lookup();
        final MethodType mt = MethodType.methodType(String.class);
        final MethodHandle mh = lookup.findVirtual(MHTestClass.class, "testMethod", mt);
        System.out.println(mh.invoke(new MHTestClass()));
    }


    public static class MHTestClass {
        public int testField = 1;

        public MHTestClass() {

        }

        public String testMethod() {
            return "method-value";
        }
    }
}

代码在正常运行时可以工作,但停止 IntelliJ 调试器并尝试调用 MethodHandle 会抛出 UnsupportedOperationException。查看 Javadocs,我可以看到 MethodHandles 无法反射调用,但我不确定我是否理解原因,或者如何在程序中调试 MethodHandle 调用。任何见解将不胜感激!

最佳答案

此问题尚未修复 IDEA-154967 , 对不起。 解决方法是使用 invokeWithArguments。

关于java - 调试期间调用 MethodHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46763824/

相关文章:

r - R编程语言有反射吗?

java - Servlet 调度程序 URL

java - 根据字符串中的术语提取 "encompassing"字符串

tomcat - 如何在 grails 上设置 tomcat 特定属性

java - 英特尔lij : How to set project configuration to java 1. 8

java - 通过 Fitnesse 测试第三方 API

java - 你能从数组列表输入中获取索引号吗?

java - 在 Wildfly 中注入(inject) EJB 时的安全异常

intellij-idea - 如何阻止 IntelliJ IDEA 突出显示插入符号下的标识符

c# - 在运行时将委托(delegate)转换为 Action<T> 或 Func<T>