问题1:如何更改ConstPool
中条目的签名?例如,假设我对带有签名“methodref
”的方法有()Ljava.util.Collection;
。如何更改为“()I
”?
我想这样做是因为当一个API发布时,对更新的API的依赖仍然使用旧方法,我想更改使用的签名,确保依赖的应用程序安全地实现它。 / p>
问题2:如何迭代LongVector
常量池条目,而不必每一步都使用反射?由于LongVector
是包私有的,ConstInfo
是包私有的,我必须使用反射来循环获取所有方法返回类型。
这将与问题编号1一起使用,以迭代常量池并修改签名并将其信息存储在类查找中。
答案 0 :(得分:1)
1)使用反射 - 没有其他方法可以访问ConstInfo。签名可以在MethodRef的名称和类型索引中找到。
2)使用反射 - 也没有其他方法可以访问LongVector的元素。获取LongVector,获取每个索引每个大小的元素(两者都可以使用反射访问 - LongVector也必须是包本地的),并将它们传递给问题1。
感谢您的帮助!