Java 实例化包含注释的类
我可以使用反射API根据注释查找类吗? 我正在寻找一种基于注释执行类的方法。 例如,我有一个带有Verify注释的类凭据,参数“token”和“permissions”是执行负责类的操作Java 实例化包含注释的类,java,reflection,annotations,Java,Reflection,Annotations,我可以使用反射API根据注释查找类吗? 我正在寻找一种基于注释执行类的方法。 例如,我有一个带有Verify注释的类凭据,参数“token”和“permissions”是执行负责类的操作 @Verify ("token") @Verify ("permissions") class Credentials { .... } 例如,Verify(“token”)应该调用TokenVerifier类中的execute方法,Verify(“permissions”)应该调用PermissionsVe
@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();
加载类后,您可以根据需要使用标准反射对类进行求值和匹配