如何获得通用类型的PsiField

时间:2016-04-06 04:23:02

标签: generics intellij-idea intellij-plugin

我正在开发一个Intellij Idea插件,我希望得到一个类的所有字段信息。但我遇到了一些困难,我无法获得通用类型的PsiField。如:

private String[] stringsArr;
private List<String> stringList;
private List<BeanLog> beanLogList;

如何获得&#39; BeanLog&#39;的PsiClass?来自PsiField?

1 个答案:

答案 0 :(得分:7)

field.getType()返回PsiClassType List<BeanLog>。其fieldType.getParameters()[0]将为PsiClassType BeanLog。如果要以通用方式(不仅来自List)提取集合组件类型,则可以使用PsiUtil.extractIterableTypeParameter(fieldType, false)。要从PsiClass获取PsiClassType,您可以使用type.resolve()PsiUtil.resolveClassInClassTypeOnly