我正在尝试使用注释对我的代码进行一些预处理。在加载时,我想制作类的“虚拟”副本及其功能。但是在编译/构建时,我必须使用注释进行一些“预编译”。我需要 java 的 AbstractProcessor 子类的进程函数中的代码。它应将带有特殊参数的注释“@Named”(取决于注释@SpecialClass 中定义的名称和方法/字段名称)添加到每个既没有@Invisible 也没有@Named 手段的方法/字段到每个字段/方法没有任何注释。如果检测到@SpecialClass-Annotation,则调用 AbstractProcessor 的过程函数。
我想编译这个:
@SpecialClass(name="Class1")
public class Test{
public int var1;
@Invisible
public int priv;
@Named(name="variable", namespace="Class1")
public int var2;
public void funcA(...){...}
@Invisible
public void funcB(...){...}
@Named(name="funcX", namespace="Class1")
public void funcC(...){...}
}
对此:
@SpecialClass(name="Class1")
public class Test{
@Named(name="var1", namespace="Class1")
public int var1;
@Invisible
public int priv;
@Named(name="variable", namespace="Class1")
public int var2;
@Named(name="funcA", namespace="Class1")
public void funcA(...){...}
@Invisible
public void funcB(...){...}
@Named(name="funcX", namespace="Class1")
public void funcC(...){...}
}
我此时的问题是我不知道如何向类对象(字段/方法)添加注释我也不了解过程函数的 2 个参数的操作。
我已经找到了这个主题:向 Java 类添加编程注释,但没有人真正给出具体示例。这就是为什么我在这里再次询问,希望有人可以描述它的工作方式。
先感谢您。
附加信息:
实际上我不想确切地问这个问题,因为我不希望人们认为我只是想要你的解决方案,但是当我要求一个例子时,我希望有人可以为我解决它。稍后,当代码被加载到 VM 中时,我会检查每个类的注解 @Named。如果我找到了一个,我将在代表命名空间的对象中注册函数或字段。这意味着如果我想通过这个昵称调用一个函数,我只需选择“对象”并查找方法的昵称。我需要在编译时而不是运行时完成带有注释的方法和字段,因为它可能是真正的方法名称被混淆了。所以运行时的方法和字段可能有无意义的名称。这就是为什么我想在代码被混淆之前完成代码 -> 在编译时。