gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:40:14 25 4
gpt4 key购买 nike

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

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

谢谢。

最佳答案

我找到了解决办法。
这并不简单,但很有效 =)

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();
}

关于java - 从 JDK 访问非公共(public)(java 原生)类 (7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16040726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com