如何使用BCEL获取类的通用信息



我想使用 BCEL 6.0-SNAPSHOT 获取我的 CounterPersistence 类的通用信息(计数器类)。签名是这样的:

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
    }
}

但是我未能编写解析签名并允许我获取类型 Counter 的代码。 思潮?

您可以使用 FindBug 中的 BCEL 实用程序,例如 GenericUtilities.getTypeParameters(...) 方法或更好地切换到 ASM 框架。

我找到了一个解决方案:

Class.forName(org.apache.bcel.classfile.Utility.methodSignatureArgumentTypes("(" + signature + ")V")[0]);

相关内容

  • 没有找到相关文章

最新更新