有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在ASM字节码库中获取泛型信息

我正在使用ASM库解析Java字节码,现在我正在尝试解析一个方法,而且我的方法很好。但在解析方法的参数时,我遇到了一个小问题,尤其是如果PARAMTER是通用列表、数组、集合等,则考虑到该方法的java代码。

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库获取此信息


共 (1) 个答案

  1. # 1 楼答案

    ASM有一个SignatureVisitor可以用来访问类型签名。这些包含类、方法和访问字段的泛型信息

    您可以在第4.1节-泛型下的asm guide中找到关于它的更多信息