PsiClass (@NotNull PsiJavaFile file, @NotNull String shortClassName) { PsiClass[] refs = file.getSingleClassImports(true); for (PsiClass ref : refs) { String className = ref.getQualifiedName(); if (className != null && PsiNameHelper.getShortClassName(className).equals(shortClassName)) { return ref; } } for (PsiClass aClass : file.getClasses()) { String className = aClass.getQualifiedName(); if (className != null && PsiNameHelper.getShortClassName(className).equals(shortClassName)) { return aClass; } } // there maybe a class imported implicitly from the current package String packageName = file.getPackageName(); if (!StringUtil.isEmptyOrSpaces(packageName)) { String fqn = packageName + "." + shortClassName; PsiClass aClass = JavaPsiFacade.getInstance(file.getProject()).findClass(fqn, file.getResolveScope()); if (aClass != null) { boolean[] foundRef = {false}; // check if that short name referenced in the file file.accept(new JavaRecursiveElementWalkingVisitor() { @Override public void visitElement(@NotNull PsiElement element) { if (foundRef[0]) return; super.visitElement(element); } @Override public void visitReferenceElement(@NotNull PsiJavaCodeReferenceElement reference) { if (shortClassName.equals(reference.getReferenceName()) && file.getManager().areElementsEquivalent(reference.resolve(), aClass)) { foundRef[0] = true; } super.visitReferenceElement(reference); } }); if (foundRef[0]) return aClass; } } return null; }