如何使用注释在编译时编写带有自定义属性的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";
}
}
如何编写界面:
@Retention(RetentionPolicy.SOURCE)
public @interface Generate {
// ...
}
我知道我需要做一些AST转换才能让这个神奇。
我也知道项目lombok,但我想通过一个简单的例子知道最不常见的分母,最好是在一个方法中,最好是一个好的编辑器会自动考虑的东西,例如 RetentionPolicy。源代码用于javac编译器,可以在Intellij IDEA中使用。
项目lombok是一个明智的野兽代码,是一个艰难的起点。
它必须比那更简单,不是吗?
有什么想法吗?
答案 0 :(得分:1)
你可以通过反思来做到这一点,但你的新班级不会成为内心阶级;但要注意,你将失去静态类型的安全性。
可以分两步完成: