gpt4 book ai didi

Java:在编译时使用注释生成自定义 Java 代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:40 24 4
gpt4 key购买 nike

如何使用注解在编译时编写带有自定义属性的 Java 内部类?

例如,我想要这个:

@Generate
class Person {
String firstname, lastname;
}

生成:

class Person {
String firstname, lastname;

public static class $Fields {
public static String firstname = "firstname";
public static String lastname = "lastname";
}
}

如何编写接口(interface):

@Retention(RetentionPolicy.SOURCE)
public @interface Generate {
// ...
}

我知道我需要进行某种 AST 转换才能使它变得神奇。

我也知道 lombok 项目,但我想知道一个简单示例的最小公分母是什么,最好是在一个方法中,最好是一个好的编辑器会自动考虑的东西,例如 RetentionPolicy。 javac编译器的SOURCE,可以在Intellij IDEA中使用。

lombok 项目是一个野兽代码明智的,是一个很难开始的地方。

它一定比那更简单,不是吗?

有什么想法吗?

最佳答案

您可以通过反射来做到这一点,但是您的新类不会是内部类;但请注意,您将失去静态类型安全性。

可以分两步完成:

  1. 通过反射读取带注释的类,并将其转换为表示新类源代码的字符串。
  2. 将此字符串写入文件,使用 Java 编译器 API 编译此字符串,然后以编程方式加载和实例化新类;见exact steps here .

实现类似功能的替代方法也可以通过字节码检测(参见 cglibjavassist )或什至使用 proxies 获得。 .

关于Java:在编译时使用注释生成自定义 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com