首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从JDK访问非公共(java原生)类(7)

从JDK访问非公共(java原生)类(7)
EN

Stack Overflow用户
提问于 2013-04-16 23:14:51
回答 1查看 727关注 0票数 0

我想使用MethodHandleNatives.getTargetMethod(MethodHandle)AccessibleObject.方法类MethodHandleNatives不是公共的。有人知道我是怎么做到的吗?

我知道通过反射访问私有方法和字段是可能的,所以我在问,这是否也是可能的。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-17 02:56:54

我找到了一个解决方案。

它不是直接的,但它是有效的=)

代码语言:javascript
复制
MethodHandle mh; // a MethodHandle Object
Class<?> mhn;
    try {
        mhn = Class.forName("java.lang.invoke.MethodHandleNatives");
        Constructor<?> con = mhn.getDeclaredConstructor();
        con.setAccessible(true);
        Object mhnInstance = con.newInstance();
        Method getTargetMethod = mhn.getDeclaredMethod("getTargetMethod", new Class<?>[]{MethodHandle.class});
        getTargetMethod.setAccessible(true);
        Method inside = (Method) getTargetMethod.invoke(mhnInstance, mh);
        System.out.println("INSIDE = " + inside.toGenericString());

    } catch (Throwable e) {
        e.printStackTrace();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16040726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档