Java 重复注解 @Repeatable
1. 设计一个重复使用的注解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(AppSpecs.class) //这里为当前注解的容器类.class
public @interface AppSpec {
/**
* 应用ID
*/
long appId();
/**
* 规格ID列表
*/
long[] specs();
}
2. 设计一个重复注解的容器注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AppSpecs {
AppSpec[] value(); //子注解的数组,一定是value
}
3. 注解的使用方法有2种:
//@AppSpec(appId = 123, specs = {1,2,3}) //1.重复使用,推荐这种,看着比较直观
//@AppSpec(appId = 456, specs = {1,2,3})
//@AppSpec(appId = 123, specs = {1,2,3})
@AppSpecs({@AppSpec(appId = 123, specs = {1,2,3}), @AppSpec(appId = 456, specs = {1,2,3})}) //2.或者这样嵌套
4.获取注解只有一种方法:
Test.class.getAnnotation(AppSpecs.class); //只能获取嵌套注解,局限住了注解的使用方式,必须为嵌套
Test.class.getAnnotation(AppSpec.class); //只能获取单个非嵌套注解,无意义
Test.class.getAnnotationsByType(AppSpec.class); //两种使用方式的注解,都能获取到,推荐;
举例:


Java 重复注解 @Repeatable的更多相关文章
- 乐字节-Java8新特性之Base64和重复注解与类型注解
上一篇小乐给大家说了<乐字节-Java8新特性之Date API>,接下来小乐继续给大家说一说Java8新特性之Base64和重复注解与类型注解. 一.Base64 在Java 8中,内置 ...
- Java 8新特性探究(二)类型注解和重复注解
本文将介绍java 8的第二个特性:类型注解. 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置.那充满争议的类型注解究竟是什 ...
- Java 8 可重复注解与类型注解
Java 8 可重复注解与类型注解 Java 8 对注解处理提供了两点改进:可重复的注解及可用于类型的注解. // 首先要提供一个容器,MyAnnotation 才能用于可重复注解 @Target({ ...
- Java 8——重复注解和注解的作用范围的扩大化
一.重复注解 在某些情况下,希望将相同的注解应用于声明或类型用途.从Java SE 8发行版开始,重复注解使可以执行此操作. 例如,正在编写代码以使用计时器服务,该服务使能够在给定时间或某个计划上运行 ...
- Java 自定义注解 校验指定字段对应数据库内容重复
一.前言 在项目中,某些情景下我们需要验证编码是否重复,账号是否重复,身份证号是否重复等... 而像验证这类代码如下: 那么有没有办法可以解决这类似的重复代码量呢? 我们可以通过自定义注解校验的方式去 ...
- jdk8系列二、jdk8方法引用、重复注解、更好的类型推断、新增注解
一.方法引用 方法引用使得开发者可以直接引用现存的方法.Java类的构造方法或者实例对象.方法引用和Lambda表达式配合使用,使得java类的构造方法看起来紧凑而简洁,没有很多复杂的模板代码. 方法 ...
- Java基础—注解(转载)
概念 注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面 ...
- Java8新特性之重复注解(repeating annotations)
一.什么是重复注解 允许在同一申明类型(类,属性,或方法)的多次使用同一个注解 二.一个简单的例子java 8之前也有重复使用注解的解决方案,但可读性不是很好,比如下面的代码: 复制代码代码如下: p ...
- JDK8新特性之重复注解
什么是重复注解 下面是JDK8中的重复注解(java.lang.annotation.Repeatable)定义的源码. @Documented @Retention(RetentionPolicy. ...
- 【Java8新特性】重复注解与类型注解,你真的学会了吗?
写在前面 在Java8之前,在某个类或者方法,字段或者参数上标注注解时,同一个注解只能标注一次.但是在Java8中,新增了重复注解和类型注解,也就是说,从Java8开始,支持在某个类或者方法,字段或者 ...
随机推荐
- 五、java操作redis
系列导航 一.redis单例安装(linux) 二.redis主从环境搭建 三.redis集群搭建 四.redis增加密码验证 五.java操作redis --demo主方法 package com. ...
- Go语言安装(Windows10)
一. 官网下载 https://golang.google.cn/dl/ 二. 软件包安装 选择对应的路径进行安装 三. 环境变量设置 1.path 检查系统环境变量Path内已经添加Go的安 ...
- C++ 利用模板偏特化和 decltype(()) 识别表达式的值类别
刚刚看到一篇 C++ 博客,里面讲到用模板偏特化和 decltype() 识别值类别:lvalue glvalue xvalue rvalue prvalue.依照博客的方法试了一下,发现根本行不通. ...
- Java应用架构演变史
垂直应用架构 也叫单体架构.以 MVC 的垂直架构举例,MVC 架构通常分为 3 层,展示层.控制层.模型层.通常基于 MVC 架构开发的应用代码会打成一个 war 包,部署在 Tomcat 等 We ...
- spring-transaction源码分析(2)EnableTransactionManagement注解
概述(Java doc) 该注解开启spring的注解驱动事务管理功能,通常标注在@Configuration类上面用于开启命令式事务管理或响应式事务管理. @Configuration @Enabl ...
- Vue之将前端的筛选结果导出为csv文件
有导入就有导出哈!这里继导入之后记录一下导出的实现过程. 1.按钮部分: <el-button class="filter-item" style="margin- ...
- mysql-字符函数-拼接-长度-切片-替换
- [转帖]【VIM】多行缩进空格与删除
向前或向后缩进一个TAB 按ctrl + v组合键进入Visual Line模式,可使用方向键选择多行: 按<或>,进行向前或向后缩进tab. 缩进n个TAB,按n+<或> 多 ...
- [转帖]传输层安全协议真(TLS)的安全吗?
https://zhuanlan.zhihu.com/p/305161227 随着数字通信,计算机网络,公钥密码体制等技术的迅速发展,安全网络通信已经成为了人们的日常需求.TLS 作为目前被广泛应用的 ...
- [转帖]关于 AREX
https://arextest.github.io/website/zh-Hans/docs/intro/ AREX 介绍 背景 对于一个初上线的简单服务,只需通过常规的自动化测试加上人工即可解 ...