在Android中是否有一个等效的MethodHandle?

时间:2014-07-23 21:16:36

标签: java android

在我的项目中,我需要多次动态访问不同对象的getter和setter。因此,我想要一种动态访问方法的快速方法。

Java 7引入了MethodHandle类来动态执行给定类的方法。从我所看到的JDK的Android端口上没有这样的东西。除了使用标准反射类之外,是否有任何可用于解决此问题的解决方法?

2 个答案:

答案 0 :(得分:2)

你显然可以获得适当的Method对象并调用它。

但是如果你想要更快的东西,你可以在运行时生成一个调用目标方法的类。所以你使用普通反射找到方法,生成一个MethodCaller类,它实现你事先定义的一些接口(callMethod()?),加载新生成的类并使用它。有一个与android运行时here兼容的库,以及列出其他可能的替代here的长讨论。

虽然这是可行的,但它肯定不容易,我建议尝试正常反射并测量性能。也许它会运作得很好。

答案 1 :(得分:0)

似乎使用API​​级别26(Oreo 2017)的方法句柄也 Android平台的一部分。它们对于执行特殊的调用很有用。

从代理服务器内部反射默认方法或仅进行反射超级调用可能需要此操作。

我尚不知道某些lookup issues是否已在Android中修复。