How to generate code dynamically with annotations at build time in Java?(java - 如何在Java中构建时使用注释动态生成代码?)
问题描述
我正在寻找生成代码的解决方案.我在 SO 和一些博客上搜索过、搜索过,但没有找到好的解决方案.
I'm looking for a solution for generating code. I have googled, searched on SO and some blogs but I didn't find a good solution.
我想在我的类上放一个注解,在编译时,一些方法和属性会自动添加到类中.
I'd like to put an annotation on my class and at compilation time, some methods and properties would be automatically added to the class.
我正在寻找的解决方案的关键点:
Key points of the solution I'm looking for :
- 生成的代码可自定义(强制)
- 无需调用像
apt
这样的外部工具(强制) - 仅 JDK,无第三方框架(
强制可选) - 可自定义注释名称(可选)
- Generated code customizable (MANDATORY)
- No external tool like
apt
have to be called (MANDATORY) - JDK only, no third-party framework (
MANDATORYOPTIONAL) - Annotation name customizable (OPTIONAL)
例如:
@Aliasable
public class MyClass {
//Some properties
// Contructor ...
// Some methods
}
我的班级在编译后会是这样的:
My class would look like this after compilation :
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 轻松集成,几乎没有工作去做使用它).
Finally, I turned my third requirement from MANDATORY to OPTIONAL and choosed project Lombok (easy integration with Maven and Eclipse, virtually no work to do
for using it).
推荐答案
看看 Project Lombok.它会在您编写时生成代码:
Have a look at Project Lombok. It generates code as you ask when you write:
public class MyClass {
@Getter @Setter private String alias;
}
如果您需要它,它还可以做更多的事情.我知道您没有要求任何外部工具,但您基本上是在重新创建它.
It also does a lot more if you need it. I know you asked for no external tools, but you would basically be recreating this.
这篇关于java - 如何在Java中构建时使用注释动态生成代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:java - 如何在Java中构建时使用注释动态生成代码?
基础教程推荐
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 降序排序:Java Map 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01