我想使用BCEL 6.0-SNAPSHOT获取CounterPersistence类的通用信息( Counter 类)。签名是这样的:
public interface CounterPersistence extends BasePersistence<Counter> {
....
}
我正在使用以下代码来读取字节码
JavaClass javaClass = ...;
Attribute[] attributes = javaClass.getAttributes();
for (Attribute attribute : attributes) {
if (attribute instanceof Signature) {
Signature signature = (Signature) attribute;
//put the code here that get the Counter class from the signature
}
}
但是我没有编写解析签名的代码,并允许我获取类型计数器。 想法?
答案 0 :(得分:1)
您可以使用FindBugs中的BCEL实用程序,例如GenericUtilities.getTypeParameters(...)方法或更好的方法切换到ASM框架。
答案 1 :(得分:0)
我找到了解决方案:
Class.forName(org.apache.bcel.classfile.Utility.methodSignatureArgumentTypes("(" + signature + ")V")[0]);