gpt4 book ai didi

java - 如何使用注释处理从编译中排除java类?

转载 作者:行者123 更新时间:2023-12-04 13:49:02 25 4
gpt4 key购买 nike

我有两个注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Ann {
public String description() default "AAA";
public String template() default "BBB";
}


@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface AnotherAnn {
public String text() default "Text";
}

带注释方法的简单类:
public class App {
@Ann(description = "Desc", template = "Templ")
public void someMethod(){}
}

我想创建 App 的新副本类并替换 @Ann复制类中的注释(在 someMethod 方法之前)到 @AnotherAnn .
等式 App 副本注解处理后的类:
public class AppCopy {
@AnotherAnn(text = "Text")
public void someMethod(){}
}

然后我应该排除 App类被编译。
处理器:
@SupportedAnnotationTypes("alexiuscrow.annotation.Ann")
@SupportedSourceVersion(SourceVersion.RELEASE_6)
public class Proc extends AbstractProcessor {

public Proc() {
super();
}

@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
/* TODO CREATE COPY & EXCLUDE ORIGINAL */
return true;
}
}

我该怎么做?

最佳答案

以下是从注释处理中排除某些 Java 类的两种通用方法:

  • 运行编译器两次。第一次,在不运行注释处理器的情况下编译整个项目。第二次,命令行应包含注释处理器,并应仅列出您要为其运行注释处理器的文件。只有编译器编译的文件才能进行注释处理。这包括在命令行上传递的文件,以及任何依赖于其 .class 文件不是最新的文件。
  • 在注释处理器中编写逻辑以跳过某些文件的处理。

  • 方法#1 是我使用的方法。

    关于java - 如何使用注释处理从编译中排除java类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32170548/

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