我正在使用ASM库来解析Java字节码,现在我正在尝试解析一个方法,而且我走的很好。但是,在解析该方法的参数并将其转换为等价的Java源代码时,我面临一些问题,特别是如果参数是泛型列表、ArrayList、Set等类型的话。请考虑此方法访问者代码:
public MethodVisitor visitMethod(int arg0, String arg1, String arg2,
String arg3, String[] arg4)
{
System.out.println("Method params: " + arg2);
}
只是指纹:
(Ljava/util/List;)V
对于此方法参数:
List<String> foo;
正如您所看到的,我已经失去了<
和>
之间的所有东西。我知道泛型的擦除。
但是我需要这些信息来知道什么类型的列表不仅仅是java/util/List
。是否存在使用ASM库获取这些信息的方法?
发布于 2013-11-25 05:34:33
ASM有一个SignatureVisitor,您可以使用它访问类型签名。这些包含访问的类、方法和字段的泛型信息。
您可以在asm指南中找到更多有关它的信息,见4.1节-泛型。
https://stackoverflow.com/questions/20185285
复制相似问题