Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实例化包含注释的类_Java_Reflection_Annotations - Fatal编程技术网

Java 实例化包含注释的类

Java 实例化包含注释的类,java,reflection,annotations,Java,Reflection,Annotations,我可以使用反射API根据注释查找类吗? 我正在寻找一种基于注释执行类的方法。 例如,我有一个带有Verify注释的类凭据,参数“token”和“permissions”是执行负责类的操作 @Verify ("token") @Verify ("permissions") class Credentials { .... } 例如,Verify(“token”)应该调用TokenVerifier类中的execute方法,Verify(“permissions”)应该调用PermissionsVe

我可以使用反射API根据注释查找类吗? 我正在寻找一种基于注释执行类的方法。 例如,我有一个带有Verify注释的类凭据,参数“token”和“permissions”是执行负责类的操作

@Verify ("token")
@Verify ("permissions")
class Credentials {
....
}
例如,Verify(“token”)应该调用TokenVerifier类中的execute方法,Verify(“permissions”)应该调用PermissionsVerifier类中的execute方法。 我会在我的类中加入注释@verifier,并提供必要的参数来找到它。像这样:

@verifier(path="classPath", action="token")
class TokenVerifier
{
…
 }

 @verifier(path="classPath", action="permissions")
 class PermissionsVerifier
 {
 …
 }

我能用这些注释得到这些类吗?值得一提的是,我不知道哪些类会有这些注释,其思想是它是动态的。

标准Java不允许您查找具有给定注释的所有类,因为注释是在加载类之后而不是之前计算的

但是,有一些工具可以扫描类路径,查找包含注释的类,并在匹配时加载该类,例如

要获取所有
验证
s,请执行以下操作:

new FastClasspathScanner("package.to.search.in")
    .matchClassesWithAnnotation(Verify.class, c -> System.out.println(c.getName()))
    .scan();
要获取所有验证程序,请执行以下操作:

new FastClasspathScanner("package.to.search.in")
    .matchClassesWithAnnotation(verifier.class, c -> System.out.println(c.getName()))
    .scan();
加载类后,您可以根据需要使用标准反射对类进行求值和匹配