java - IntelliJ插件开发: how to generate a new source file

标签 java intellij-idea jetbrains-ide intellij-plugin

我正在开发一个插件,它将在打开的类内部和外部生成代码。

我扩展了 GenerateMembersHandlerBase 类来生成该类的成员 - 它工作得很好。

现在我需要生成一个完整的类(新的源文件),它将放置在我正在处理的类旁边。

问题:我找不到任何允许我创建新的 java 源文件的 API。请提示我API,或者提示我IntelliJ IDEA source code中的位置在哪里实现这样的事情。

更多上下文:假设我们有 com.mycompany.User 类。我正在实现一个插件,它将为其生成具有以下格式的构造函数:

public User(UserInfo info) {
    //...
}

并且需要在航类生成UserInfo 类。 因此,在代码生成之后,我应该在类 User 中有一个构造函数,并为 com.mycompany.UserInfo 提供单独的源文件。

最佳答案

您可以使用VirtualFile.createChildData()方法创建一个新的虚拟文件。

IDEA 本身如何创建文件的示例可以在 NewFileAction.createNewFile() 中找到。方法。

它正在调用FileSystemTreeImpl.createNewFile()方法调用前面提到的 createChildData() 方法。

关于java - IntelliJ插件开发: how to generate a new source file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551560/

相关文章:

java - IntelliJ 将数组值对齐到右边距

java - 以编程方式对 java 文件调用 intellij 代码格式化程序

android - IntelliJ 上的 Android 测试中源文件的 NoClassDefFoundError

javascript - 有没有办法在 WebStorm 中启用对可选链接运算符的支持

java - 我的 Android Studio 模拟器无法正常工作

java - 不支持的 Java 版本 : Cannot start under Java 1. 7 : Java 1. 需要 8 或更高版本

java - Android 上可以使用 ByteBuddy 进行 MethodDelegation 拦截吗?

java - final 字段如何防止其他线程看到部分构造的对象?

java - ZonedDateTime hashCode() 与 isEqual() 一致吗?

java - 为什么包可见性优先于子类可见性?