gpt4 book ai didi

java - 有什么办法让这个注释自动检查Java方法参数类型

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

java中的@interface注解。

如果我添加@Target(value=ElementType.METHOD),则可以为Java Method导入此注释。

有什么方法可以让这个注解自动检查Java方法参数类型吗?

比如,我有一个方法:

    @Annotation(type=Integer)
sayHello(String name)

一旦我添加了customer Annotation,它会自动检查sayHello参数类型是否匹配,如果不匹配,则会导致编译错误。

可以实现吗?如果,如何?排除使用java Reflect in Runtime来检查的想法,这不符合我的想法。

提前致谢。

最佳答案

你需要(1) 制作自己的注解处理器,其API由JDK的javax.annotation.processingjavax.lang.model包提供,在编译过程中会调用并进行必要的处理检查。(2)使用SPI附加

(1) 例如,给定注释

package aptest;    
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.SOURCE)
public @interface Annotation {
Class<?> type();
}

注释处理器可能如下所示:

package aptest;
// ... imports
@SupportedAnnotationTypes({"aptest.Annotation"})
public class AnnotationProcessor extends AbstractProcessor
implements Processor {

@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
for (TypeElement te : annotations) {
for (Element e : roundEnv.getElementsAnnotatedWith(te)) {
// do your checking
}
}
return true;
}

}

(2) 当您打包注释处理器时(假设在 aptest.jar 中),您将包含包含注释处理器名称的 META-INF/services/javax.annotation.processing.Processor 文件类:

aptest.AnnotationProcessor

当您编译代码时,将调用注释处理器。要使用它,命令行应该像这样:

javac -cp aptest.jar SayHello.java

关于java - 有什么办法让这个注释自动检查Java方法参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19357599/

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