在为我正在制作的应用程序创建语言文件时,我遇到了很多样板代码。我目前有一个包含所有语言字符串的类,然后我使用反射将这些字符串写入文件。
我经常遇到的是我的字符串中有某些我想替换的占位符,例如我可能有这样的字符串:
public static String USER_INFO = "Username: %name% money: %balance%";
我想要实现的是生成一些基于注释的方法,例如我可以使用 lombok 生成 getters/setters 和其他方法。基于上面的字符串,我会有一个名为Arguments(正确地应该命名为 Replacers 或更有意义的东西)的注释,如下所示:
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface Arguments {
String[] value();
}
我想做的是添加这样的注释:
@Arguments(
value = {"%balance%", "%name%"}
)
public static String USER_INFO = "Username: %name% - money: %balance%";
并获取以下自动生成的替换方法:
public static String USER_INFONameReplacement(String name) {
return USER_INFO.replace("%name%", name);
}
public static String USER_INFOAllReplacement(String name, String balance) {
return USER_INFO.replace("%name%", name).replace("%balance%", balance);
}
public static String USER_INFOBalanceReplacement(String balance) {
return USER_INFO.replace("%balance%", balance);
}
但我似乎无法让它注册?
所以我的第一个问题是,如果我想实现这个目标,AbstractProcessor 是可行的方法吗?如果不是那怎么办?如果是,那为什么不注册?我正在使用 IntelliJ 并进入设置 -> 构建 -> 编译器并将注释处理器更改为启用并将处理器路径设置为我的 SuggestProcessor
POPMUISE
小唯快跑啊
相关分类