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

2023-04-04Java开发问题
10

本文介绍了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 (MANDATORY OPTIONAL)
  • 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中构建时使用注释动态生成代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13