IDEA代码生成插件

1,042 阅读1分钟

前言

作为一名CRUD Boy,日常工作中经常存在一些重复的模板工作,例如为某个对象中多个属性进行 set 赋值、对象之间的属性复制、JavaBean与JSON相互转换等等。有没有办法可以使得这些重复的流程可以自动化呢?IDEA插件Eggs将会是你的最佳助手。

Eggs(github.com/hexffff0/eg… IDEA 插件,它能让你在IDEA中编写Java代码与IDEA进行交互。

如何获取插件Eggs

Eggs目前已经上传到Jetbrains插件市场,在插件市场搜索Eggs即可下载。

使用Eggs

下面这个例子展示了如何利用Eggs得到复制类方法到当前位置的能力。

在Settings面板新增并编写执行单元,如下图

图中代码如下

package com.github.hexffff0.incubator.codeutils.copymethod;

import java.util.List;
import java.util.Map;
import com.github.hexffff0.eggs.utils.JavaUtils;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiMethod;
public class CopyMethod {

   // 程序入口
   public void main(Map<String, Object> context) {
       AnActionEvent event = (AnActionEvent) context.get("AnActionEvent");
       Project project = event.getProject();
       if (project == null) {
           return;
      }
       PsiClass selectedClass = JavaUtils.selectClass("select class", project);
       List<PsiMethod> methods = JavaUtils.selectMethods(selectedClass, "select method", true, true);
       Editor editor = event.getData(CommonDataKeys.EDITOR);
       if (editor == null) {
           return;
      }
       PsiFile file = event.getData(CommonDataKeys.PSI_FILE);
       methods.forEach(method -> JavaUtils.writeToCaret(method.getText(), file, editor));
  }
}

调用执行单元

如何高效的编写执行单元?

Incubator(github.com/hexffff0/in…

最后

Eggs提供的是与IDEA交互的能力,所以理论上来说它能让你做很多很多的事情。