0

我可以用 javaparser 解析泛型方法吗?如果可能的话怎么办?例如这是我的方法:

public static < E > void printArray( E[] inputArray )
   {
      // Display array elements              
         for ( E element : inputArray ){        
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }

当我使用 MethodVisitor 解析并使用 MethodVisitor.getParameters().getType 我得到 E[] 但我需要知道它是对象。有可能吗?

4

2 回答 2

0

唯一的方法是创建自己的解析器。JavaParser 返回 BeginLine 方法,唯一的方法是解析这一行。

public static < E > void printArray( E[] inputArray )

当我们删除所有修饰符(公共和静态)并且下一个值不等于返回类型(void)时,我们得到并且我们知道 E 是 Object。

于 2014-12-07T17:21:28.530 回答
0

如果我正确理解您的问题,您希望 JavaParser 告诉您 E 没有扩展任何内容,因此它可能是一个对象。这是 JavaParser 无法做到的,因为它只是一个解析器:它构建 AST 但它不尝试解析符号、分析类型等,因此它不能用于您的目标。您可能想尝试 Eclipse JDT 之类的东西(通过一些努力也可以在 Eclipse 之外使用......)

免责声明:我是 JavaParser 的贡献者

于 2015-02-16T20:02:43.017 回答