Java注解中的属性必须是完全静态的表达式,但是由于语言缺乏预处理能力,注解中的代码重用基本上是不存在的。
例如,以下用例没有替代方案:
#define GRANTED {"group1", "group2"}
@Access(granted = GRANTED)
public void ...
#define USER_HAS_ACCESS(userArg, permissions) "arguments." + userArg + ".hasAccess(" + permissions + ")"
@Access(grantedIf = USER_HAS_ACCESS("usr", "modify"))
public void modifyData(User usr, Data d) ...
在这些情况下,必须在使用注释的每个位置重新生成被宏替换的代码(因为在 Java 中没有数组常量和编译时字符串格式),这是一个很大的维护问题。
我想知道是否有任何适用于 Maven 的 Java 预处理器?