gpt4 book ai didi

intellij-idea - 修改 Kotlin 类

转载 作者:行者123 更新时间:2023-12-04 06:34:11 28 4
gpt4 key购买 nike

我想为 Intellij IDEA 编写一个插件,它应该修改 Java 和 Kotlin 代码。

我用的方法

PsiClass.getMethods()

为了获取Java和Kotlin类的所有方法。到目前为止一切顺利,所以我使用像

这样的方法
PsiClass.add(), PsiClass.addAfter(), PsiClass.addBefore()

在 Java 文件上调用它们后一切正常,但开始抛出异常

IncorrectOperationException

有一次我在 Kotlin 类(class)上给他们打电话。

对于如何修改 Kotlin 和 Java 类(最好使用相同的方法)的任何提示,我将不胜感激。

最佳答案

当您通过 JavaPsiFacade 搜索 Kotlin 类时,它会返回 light 类,这是一种仅基于类文件中的信息的浅层表示。为了添加 PSI 元素,您必须对其调用 navigationElement。然后,IJ 将解析源代码并构建可修改的完整 PSI 树。

但是,如果类是 Kotlin 类,navigationElement 将返回一个 KtClass,它不是从 PsiClass 派生的。您将不得不使用 Kotlin 层次结构中的工具来修改它。 Kotlin 中的方法实例也不是 PsiMethod 的实例,而是 KtMethod 的实例。

为了以通用方式分析 Java 和 Kotlin 源代码,有一种称为“UAST”的不同语法树,但对于修改,您需要一种特定于语言的方法。

关于intellij-idea - 修改 Kotlin 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41705925/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com