我正在寻找生成代码的解决方案。我用谷歌搜索,搜索SO和一些博客,但我找不到一个好的解决方案。
我想在我的类上添加一个注释,在编译时,一些方法和属性会自动添加到类中。
我正在寻找的解决方案的关键点:
apt
之类的外部工具(强制性)例如:
@Aliasable
public class MyClass {
//Some properties
// Contructor ...
// Some methods
}
编译后我的课程看起来像这样:
public class MyClass {
//Some properties
private String alias;
// Contructor ...
// Some methods
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias=alias;
}
}
修改
最后,我将我的第三个要求从MANDATORY转为OPTIONAL并选择了project Lombok(与Maven和Eclipse轻松集成,几乎没有工作要做
使用它。)
答案 0 :(得分:14)
自版本1.6以来,annotation processing tool已集成在 javac 中,并且是part of the JDK。因此,在使用 Pluggable Annotation API 时不需要外部工具。您可以使用Mirror API分析自定义注释或方法/参数/字段/类声明来生成任何代码。
注释处理器API表示您不应更改现有类。相反,您应该生成现有类的子类并在这些子类上创建扩展方法。
似乎有可能改变类(例如通过使用字节码操作库),尽管这与规范形成对比,并且可能导致其他注释处理器出现问题,并且可能无法以相同的方式与所有编译器一起使用。 / p>
答案 1 :(得分:12)
看看Project Lombok。它会在你写的时候生成代码:
public class MyClass {
@Getter @Setter private String alias;
}
如果你需要它还可以做更多的事情。我知道你没有要求外部工具,但你基本上会重新创建它。
答案 2 :(得分:3)
我使用XML和XSLT生成代码。它用于EJB,Logic和视图的CRUD部分。它不是在运行时进行的,而是在构建服务器上。开发人员可以手动生成代码以进行良好的开发。这是通过ANT在buildserver上使用的相同命令完成的。
因为生成是使用XML和XSLT,所以它是高度可定制的。
如果你谷歌Java code generation with XSLT
,你会遇到很多例子。请注意,这种技术的历史可以追溯到2000年左右,因此现在可能已经提供了更简单的解决方案。