0
点赞
收藏
分享

微信扫一扫

IntelliJ Platform-Plugins-获取类相关信息(PsiClass)


我们可以通过具体的PsiElement的getContainingClass()方法来获取PsiClass,但是这是有前提条件的,就是鼠标光标如果在方法上,则需要先将PsiElement转换成PsiMethodImpl,然后调用getContainingClass,同理,如果鼠标在其他地方,则需要先将其转换成指定的PsiElement具体实现才行,为了避免这种if判断的行为,本文下面的代码将展示:
鼠标光标在任意位置,都可以获取到PsiClass,这是通过PsiFile做到的

public class MyAction extends AnAction {
    @Override
    public void actionPerformed(@NotNull AnActionEvent e) {
        PsiFile psiFile = e.getData(PlatformDataKeys.PSI_FILE);
        FileASTNode node = psiFile.getNode();
        PsiElement psi = node.getPsi();
        PsiJavaFile pp=(PsiJavaFile) psi;
        PsiClass[] classes = pp.getClasses();
        for (PsiClass aClass : classes) {
        	// 此处即可获得当前文件的PsiClass
            System.out.println(aClass.getName());
        }
    }
}


举报

相关推荐

0 条评论