Eclipse新建类向导

  • 介绍

Eclipse新建类的时候,是可以自动添加一个main方法的,这个是怎么做到的呢?我们可不可以修改这个向导,从而添加别的方法?

使用过自动添加getter和setter方法的小盆友,想不想知道Eclipse又是怎么做到的?我们可不可以在给PO添加getter和setter方法的同时把我们需要的例如@Entity、@Column等注解也添加好呢?

实际上,Eclipse还可以帮我们把注释也根据既定规则来添加好。

  • main方法的玄机

通过反编译Eclipse安装根目录中的plugins文件夹下的org.eclipse.jdt.ui_xxx.jar文件或者访问http://grepcode.com可以看到源代码。

org.eclipse.jdt.internal.ui.wizards.NewClassCreationWizard是用于新建一个Java类的向导

org.eclipse.jdt.ui.wizards.NewClassWizardPage是新建类向导的UI页面,要注意这个类的包路径中没有internal,也就是说我们可以通过继承的方式来修改或者增加功能

org.eclipse.jdt.ui.CodeGeneration是JDT对外提供代码生成的一个工具类

org.eclipse.jdt.internal.corext.codemanipulation.StubUtility是JDT对CodeGeneration的内部实现

main方法的添加就在NewClassWizardPage.createTypeMembers中实现,这里主要调用了:CodeGeneration.getMethodComment(用于方法上注释的添加)、CodeGeneration.getMethodBodyContent(用于方法的添加)。方法的头部和尾部还是要我们通过字符串拼接来完成的。最终,org.eclipse.jdt.core.IType接口提供了createField(添加属性)、createMethod(添加方法)。

  • 添加注解

下面是代码片段:

  • 参考

这里有基于Eclipse提供的API的代码生成技术

如果想看更底层的代码生成的话,请看《JCodeModel》

想要自己开发一个Eclipse插件的话,这里有篇Helloworld供你参考。

在Eclipse中到底有哪些扩展点呢?这里有个清单,还有对应的教程哦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注