我正在使用java解析器库处理一个java源文件。
我在分析的源代码中遇到了这种情况:
List<Allergen> getList() {
return EnumSet.allOf(Allergen.class).stream()
.filter(this::isAllergicTo)
.collect(Collectors.toList());
}
我需要访问列表返回类型的泛型类(本例中为过敏原)
我正在分析器中使用voidvisitoradapter类的扩展
下面是代码摘录:
public class PlaceholderNormalizer extends VoidVisitorAdapter<String> {
...
...
@Override
public void visit(MethodDeclaration n, String arg) {
logger.debug("MethodDeclaration: {}", n.getName().asString());
logger.debug(" --- " + n.getTypeAsString()); // prints: List<Allergen>
// DO SOME STUFF
super.visit(n, arg);
}
...
...
}
我可以使用 n.getType()
但是,我不知道如何检索过敏原类。
拜托,我需要帮助
1条答案
按热度按时间8yoxcaq71#
如果是这种方法
n.getType
将返回的示例ClassOrInterfaceType
. 要获取泛型参数,可以将其作为此类型获取并使用ClassOrInterfaceType::getTypeArguments
方法:这将打印
Allergen
.