Java运行时,相当于使用javax Processor/google@AutoService进行注释处理



我以前使用过javax.annotation.processing.Processor/AbstractProcessorcom.google.auto.service.@AutoServiceRetentionPolicy.SOURCE级别上进行注释处理,那是我第一次发现非常有用的RoundEnvironment.getElementsAnnotatedWith()的时候。

现在,在一个完全无关的项目中,我需要相同的功能,但在运行时。换句话说,我有注解

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Mapper {
Class<?> forUID() default Object.class;
}

并且我想要获得用CCD_ 5表示的每一个元素(当然它只能是构造函数或方法(。我可以在运行时使用RoundEnvironment吗?如果是,我如何获得它的实例?如果没有,是否有与之等效的运行时?提前谢谢。

使用:

  • JDK 11(openjdk11(
  • Maven 3.6.3

注释处理是一个仅在编译时使用的工具,对注释的保留只是说明注释是在运行时可用还是仅在源代码中可用,对于运行时,您可以使用反射,但也可以在编译时用注释处理器生成一个类,列出用特定注释注释的所有类型。

最新更新