【坑备注】自定义@Repeatable注解
2023-12-15 14:57:47
在字段上定义可重复使用的注解:
@Target(value = {ElementType.FIELD})
@Retention(value = RetentionPolicy.RUNTIME)
@Repeatable(value = Indexes.class)
public @interface TableIndex {
IndexTypeEnum type();
String name();
int order();
}
这里指定了@Repeatable注解,支持多次使用相同的注解
@TableIndex()
@TableIndex()
private String field;
想要这样的使用方式生效,需要采用一个包裹性的注解
@Target(value = {ElementType.FIELD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Indexes {
TableIndex[] value();
}
问题来了:
1. 当field字段上只用一个@TabIndex注解,那么下面的代码始终是null
field.getAnnotation(Indexes.class)
想要获取TabIndex注解,是可以的
field.getAnnotation(TabIndex.class)
2. 当field字段上用多个@TabIndex注解,那么下面的代码始终是null
field.getAnnotation(TabIndex.class)
想要获取TabIndex注解,是可以的
field.getAnnotation(Indexes.class).value()
结论:
使用Repeatable注解的时候,如@Group包裹@Single注解,需要分情况判断,
1. 如果使用了一次,那么需要使用@Single反射获取注解
2. 如果使用了多次,需要使用@Group反射获取注解
文章来源:https://blog.csdn.net/Day_and_Night_2017/article/details/135015563
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!