java - 如何获取在类中声明的自定义注释列表
问题描述
我创建了自定义注释来获取在运行时具有这些标记的类列表(按预期工作)。
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Marker {
@interface Only{}
@interface Marker1{}
@interface Marker2{}
}
我需要一种机制来获取在这些测试类中声明的标记列表。下面是我试图运行以获得这些的代码,但没有运气!
@Marker.Only
public class Sample {
@Test
public void main() {
Assert.assertTrue(true);
}
@AfterMethod
public void m2(ITestResult result) {
Annotation[] acc = result.getMethod().getRealClass().getAnnotations();
// Getting blank array as acc
System.out.println(acc);
}
}
解决方案
@Marker
您声明了一个具有保留的顶级类型RUNTIME
,但随后您声明了几个嵌套类型(顺便说一下,对于注释来说不典型),每个都没有保留策略,因此默认为CLASS
. 将保留策略应用于您的每种注释类型。
推荐阅读
- python - 使用列表推导:对不是字符串或另一个列表元素的列表元素进行计算
- excel - 在单元格中使用 IF() 语句运行 Sub 过程
- java - 需要帮助访问内部类中的变量for循环
- java - RecyclerView 没有在活动开始时调用 onCreateViewHolder
- ssl - Issue connecting to SSL secured Kafka
- django - Django] Saving multiple images by formset doesn't work
- ios - iOS 应用程序的 Citrix MDX 工具包包装失败并出现“Mach Header contains Invalid Flag bits ...”错误
- javascript - JavaScript 二叉搜索树按顺序遍历返回未定义作为答案的一部分
- python - 在 Pandas 中使用字符值创建新行
- c# - Access GSuite user mailboxes using admin credentials