下面列出了怎么用com.intellij.psi.PsiReferenceList的API类实例代码及写法,或者点击链接到github查看源代码。
public static ImmutableList<TypeVariableName> getTypeVariables(PsiClass psiClass) {
PsiTypeParameter[] psiTypeParameters = psiClass.getTypeParameters();
final List<TypeVariableName> typeVariables = new ArrayList<>(psiTypeParameters.length);
for (PsiTypeParameter psiTypeParameter : psiTypeParameters) {
final PsiReferenceList extendsList = psiTypeParameter.getExtendsList();
final PsiClassType[] psiClassTypes = extendsList.getReferencedTypes();
final TypeName[] boundsTypeNames = new TypeName[psiClassTypes.length];
for (int i = 0, size = psiClassTypes.length; i < size; i++) {
boundsTypeNames[i] = PsiTypeUtils.getTypeName(psiClassTypes[i]);
}
final TypeVariableName typeVariable =
TypeVariableName.get(psiTypeParameter.getName(), boundsTypeNames);
typeVariables.add(typeVariable);
}
return ImmutableList.copyOf(typeVariables);
}
private static boolean extendsTestCase(PsiClass psiClass, Set<PsiClass> checkedClasses) {
if (!checkedClasses.add(psiClass)) {
return false;
}
PsiReferenceList extendsList = psiClass.getExtendsList();
if (extendsList == null) {
return false;
}
for (PsiJavaCodeReferenceElement ref : extendsList.getReferenceElements()) {
if (JUnitUtil.TEST_CASE_CLASS.equals(ref.getQualifiedName())) {
return true;
}
PsiElement clazz = ref.resolve();
if (clazz instanceof PsiClass && extendsTestCase((PsiClass) clazz, checkedClasses)) {
return true;
}
}
return false;
}
/**
* Make the class implementing Parcelable
*/
private void makeClassImplementParcelable(PsiElementFactory elementFactory, JavaCodeStyleManager styleManager) {
final PsiClassType[] implementsListTypes = psiClass.getImplementsListTypes();
final String implementsType = "android.os.Parcelable";
for (PsiClassType implementsListType : implementsListTypes) {
PsiClass resolved = implementsListType.resolve();
// Already implements Parcelable, no need to add it
if (resolved != null && implementsType.equals(resolved.getQualifiedName())) {
return;
}
}
PsiJavaCodeReferenceElement implementsReference =
elementFactory.createReferenceFromText(implementsType, psiClass);
PsiReferenceList implementsList = psiClass.getImplementsList();
if (implementsList != null) {
styleManager.shortenClassReferences(implementsList.add(implementsReference));
}
}