下面列出了com.intellij.psi.PsiJavaCodeReferenceElement# getReferenceName ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Nullable
private static PsiAnnotation findAnnotationQuick(@Nullable PsiAnnotationOwner annotationOwner, @NotNull String qualifiedName) {
if (annotationOwner == null) {
return null;
}
PsiAnnotation[] annotations = annotationOwner.getAnnotations();
if (annotations.length == 0) {
return null;
}
final String shortName = StringUtil.getShortName(qualifiedName);
for (PsiAnnotation annotation : annotations) {
PsiJavaCodeReferenceElement referenceElement = annotation.getNameReferenceElement();
if (null != referenceElement) {
final String referenceName = referenceElement.getReferenceName();
if (shortName.equals(referenceName)) {
if (referenceElement.isQualified() && referenceElement instanceof SourceJavaCodeReference) {
String possibleFullQualifiedName = ((SourceJavaCodeReference) referenceElement).getClassNameText();
if (qualifiedName.equals(possibleFullQualifiedName)) {
return annotation;
}
}
final String annotationQualifiedName = getAndCacheFQN(annotation, referenceName);
if (null != annotationQualifiedName && qualifiedName.endsWith(annotationQualifiedName)) {
return annotation;
}
}
}
}
return null;
}
@Nullable
private static PsiAnnotation findAnnotationQuick(@Nullable PsiAnnotationOwner annotationOwner, @NotNull String... qualifiedNames) {
if (annotationOwner == null || qualifiedNames.length == 0) {
return null;
}
PsiAnnotation[] annotations = annotationOwner.getAnnotations();
if (annotations.length == 0) {
return null;
}
final String[] shortNames = new String[qualifiedNames.length];
for (int i = 0; i < qualifiedNames.length; i++) {
shortNames[i] = StringUtil.getShortName(qualifiedNames[i]);
}
for (PsiAnnotation annotation : annotations) {
final PsiJavaCodeReferenceElement referenceElement = annotation.getNameReferenceElement();
if (null != referenceElement) {
final String referenceName = referenceElement.getReferenceName();
if (ArrayUtil.find(shortNames, referenceName) > -1) {
if (referenceElement.isQualified() && referenceElement instanceof SourceJavaCodeReference) {
final String possibleFullQualifiedName = ((SourceJavaCodeReference) referenceElement).getClassNameText();
if (ArrayUtil.find(qualifiedNames, possibleFullQualifiedName) > -1) {
return annotation;
}
}
final String annotationQualifiedName = getAndCacheFQN(annotation, referenceName);
if (ArrayUtil.find(qualifiedNames, annotationQualifiedName) > -1) {
return annotation;
}
}
}
}
return null;
}