0

I would like to get the generic information (Counter class) of my CounterPersistence class using BCEL 6.0-SNAPSHOT. The signature is like this:

public interface CounterPersistence extends BasePersistence<Counter> {
....
}

I'm using the following code to read the bytecode

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

But I'm failing to write a code that parse the signature and allow me to get the type Counter. Thoughts?

4

2 回答 2

1

You can use BCEL utilities from FindBugs, e.g. GenericUtilities.getTypeParameters(...) method or better switch to ASM framework.

于 2012-06-12T13:52:14.077 回答
0

I found a solution:

Class.forName(org.apache.bcel.classfile.Utility.methodSignatureArgumentTypes("(" + signature + ")V")[0]);
于 2015-05-15T09:47:47.403 回答