前言
作为一名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交互的能力,所以理论上来说它能让你做很多很多的事情。