用于代码生成的Eclipse插件

时间:2010-07-01 11:58:10

标签: java eclipse-plugin code-generation

我有几个类,如下例所示:

abstract class AClass {
  boolean validate(){
    return true;
  }
}

当另一个类扩展AClass时,我会这样做:

class BClass extends AClass {
  @Override
  boolean validate() {
    if (!super.validate()) {
        return false;
    }
    // TODO validate
    return true;
  }
}

当我从菜单创建一个新类时,是否有一个eclipse插件为我生成代码(File> New> Class)?
我正在考虑使用注释

@Target(ElementType.METHOD)
@interface Code {
    String content();
}

并将其添加到方法中:

abstract class AClass {
    @Code(content = "\tif (!super.validate()) {\r\n" 
        + "\t\treturn false;\r\n" 
        + "\t}\r\n" 
        + "\t// TODO validate\r\n"
        + "\treturn true;")
    boolean validate() {
        return true;
    }
}

插件应查找注释并在新创建的类中生成代码。

2 个答案:

答案 0 :(得分:0)

在Windows下 - >首选项,您可以键入Java代码模板。

您可以在Java下找到代码模板 - >代码风格 - >代码模板

在Eclipse 3.5上,类体的模式为空。您可以添加自己的模式。

这是新Java文件的模式,可以让您了解模式的样子。

${filecomment}
${package_declaration}

${typecomment}
${type_declaration}

答案 1 :(得分:0)

我的请求的解决方案如下:

在插件中创建另一个“新类向导”,方法是使用扩展org.eclipse.jdt.internal.ui.wizards.NewElementWizard的页面扩展NewClassCreationWizard(类似于org.eclipse.jdt.ui.wizards.NewTypeWizardPage类)(比如NewClassWizardPage

覆盖org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createTypeMembers(IType, ImportsManager, IProgressMonitor)

首先,致电createInheritedMethods(如NewClassWizardPage

然后,type.getMethods()将为您提供超类中的继承方法。

检查结果数组中的方法是否在超类中具有所需的注释(例如@Code)。如果是,请创建新的方法代码,包括它的声明:

StringBuffer buf = new StringBuffer();
buf.append("@Override").append("\n");
buf.append(Modifier.toString(Modifier.PUBLIC) + " ");
buf.append(Signature.toString(method.getSignature(), method.getElementName(), method.getParameterNames(), false, true));
buf.append(" {").append("\n");
buf.append("// the code from the annotation\n");
buf.append("}");

删除当前方法:

method.delete(true, monitor);

然后使用自定义代码添加方法:

type.createMethod(buf.toString(), null, true, monitor);

现在安装插件,当您使用向导创建新类时,方法的自定义代码将自动写入。