为什么我不能从Kotlin获得PsiClass却在Java中成功了

问题描述 投票:0回答:1

我尝试从Kotlin文件(PsiFile实例为KtFile)获得PsiClass,但是没有得到null,在Java情况下是成功的。

    PsiFile psiFile = e.getData(CommonDataKeys.PSI_FILE);
    Editor editor = e.getData(CommonDataKeys.EDITOR);

    // null in kotlin
    PsiClass psiClass = getPsiClass(editor, psiFile);

    .....    

    private PsiClass getPsiClass(Editor editor, PsiFile file) {

        int offset = editor.getCaretModel().getOffset();
        PsiElement element = file.findElementAt(offset);

        if (element == null)
            element = file.findElementAt(offset - 1);
        if (element == null) {
            return null;
        } else {
            PsiClass target = (PsiClass) PsiTreeUtil.getParentOfType(element, PsiClass.class);
            if (target == null) {
                element = file.findElementAt(offset - 1);
                if (element == null)
                    return null;
                target = (PsiClass) PsiTreeUtil.getParentOfType(element, PsiClass.class);
            }
            return target instanceof SyntheticElement ? null : target;
        }
    }
intellij-plugin intellij-15
1个回答
0
投票

PsiClass仅用于java classes。对于Kotlin,您应该使用KtClass

© www.soinside.com 2019 - 2024. All rights reserved.