如何在Java中的构建时使用注释动态生成代码?


问题内容

我正在寻找一种生成代码的解决方案。我已经用谷歌搜索,搜索了SO和一些博客,但没有找到一个好的解决方案。

我想在类上添加注释,并且在编译时,一些方法和属性会自动添加到类中。

我正在寻找的解决方案的要点:

  • 生成的代码可定制(强制)
  • 无需apt调用任何外部工具(强制性)
  • 仅JDK,无第三方框架( 强制 选配)
  • 注释名称可自定义(可选)

例如 :

@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;
   }
}

编辑:
最后,我将我的第三个要求从“强制性”变成了“可选”,并选择了项目Lombok(与Maven和Eclipse轻松集成,使用它几乎不需要做任何工作)。


问题答案:

看看Lombok项目。当您编写时,它会按照您的要求生成代码:

public class MyClass {
  @Getter @Setter private String alias;
}

如果您需要的话,它还会做更多的事情。我知道您不要求任何外部工具,但您基本上会重新创建它。