java注解(Annotation)-Repeatable实战
Java 预定义注解
Java 支持一组预先定义好的注解。下面介绍了Java Core 中提供的注解
- @Retention: 该注解用来修饰其他注解,并标明被修饰注解的作用域。其 value 的属性值包含3种:
- SOURCE: 注解仅在源代码中可用。编译器和 JVM 会忽略此注解,因此在运行时不可用;
- CLASS: 编译器会处理该注解,但 JVM 不会处理,因此在运行时不可用;
- RUNTIME: JVM 会处理该注解,可以在运行时使用。
- @Target: 该注解标记可以应用的目标元素:
- ANNOTATION_TYPE: 可修饰其他注解;
- CONSTRUCTOR: 可以修饰构造函数;
- FIELD: 可以修饰字段或属性;
- LOCAL_VARIABLE: 可以修饰局部变量;
- METHOD: 可以修饰 method;
- PACKAGE: 可以修饰 package 声明;
- PARAMETER: 可以修饰方法参数;
- TYPE: 可以修饰 Class、Interface、Annotation 或 enum 声明;
- PACKAGE: 可以修饰 package 声明;
- TYPE_PARAMETER: 可以修饰参数声明;
- TYPE_USE: 可以修饰任何类型。
- @Documented: 该注解可以修饰其他注解,表示将使用 Javadoc 记录被注解的元素。
- @Inherited: 默认情况下,注解不会被子类继承。但是,如果把注解标记为 @Inherited,那么使用注解修饰 class 时,子类也会继承该注解。该注解仅适用于 class。注意:
使用该注解修饰接口时,实现类不会继承该注解。即: @Inherited继承只能发生在类上,而不能发生在接口上(也就是说标注在接口上仍然是不能被继承的)
当@InheritedAnno注解加在某个类A上时,假如类B继承了A,则B也会带上该注解。 - @Deprecated: 标明不应该使用带此注解的元素。使用这个注解,编译器会对应生成告警。该注解可以应用于 method、class 和字段。
- @SuppressWarnings: 告诉编译器由于特定原因不产生告警。
- @Override: 该注解通知编译器,该元素正在覆盖(Override)父类中的元素。覆盖元素时,不强制要求加上该注解。但是当覆盖没有正确完成时,例如子类方法的参数与父类参数不同或者返回类型不匹配时,可以帮助编译器生成错误。
- @SafeVarargs: 该注解断言(Assert)方法或构造函数代码不会对其参数执行不安全(Unsafe)操作。
- @Repeatable: 该注解表示可以对同一个元素多次使用相同的注解
Repeatable 实战
定义一个可重复修饰 class 的注解
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(RepeatableAnnotation.class)
public @interface MyAnnotation {String value();String name();
}
RepeatableAnnotation可以重复修饰元素
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RepeatableAnnotation {MyAnnotation[] value();
}
@MyAnnotation(value = "Jaemon", name = "J.M")
@MyAnnotation(value = "Answer", name = "L.A")
public class AnswerApp {public static void main(String[] args) {for (Annotation annotation : AnswerApp.class.getAnnotations()) {System.out.println(annotation.toString());}System.out.println();RepeatableAnnotation annotation = AnswerApp.class.getAnnotation(RepeatableAnnotation.class);for (MyAnnotation myAnnotation : annotation.value()) {System.out.println(myAnnotation.value());System.out.println(myAnnotation.name());}}}
@com.answer.ai.anno.RepeatableAnnotation(value=[@com.answer.ai.anno.MyAnnotation(value=Jaemon, name=J.M), @com.answer.ai.anno.MyAnnotation(value=Answer, name=L.A)])Jaemon
J.M
Answer
L.A
参考网址
- Java 8 注解探秘
java注解(Annotation)-Repeatable实战相关推荐
- java 注解: Annotation
java 注解: Annotation 普通注解 自定义注解 元注解 注解: 位于源码中,用来修饰程序的元素,但不会对被修饰的对象有直接的影响. 可增加程序的动态性. 普通注解 普通注解:为java代 ...
- Java注解(Annotation)详解
转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...
- Java注解Annotation 完成验证
Java注解Annotation用起来很方便,也越来越流行,由于其简单.简练且易于使用等特点,很多开发工具都提供了注解功能,不好的地方就是代码入侵比较严重,所以使用的时候要有一定的选择性. 这篇文章将 ...
- java注释和注解_深入理解JAVA注解(Annotation)以及自定义注解
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制.Java 语言中的类.方法.变量.参数和包等都可以被标注.注解可以看作是一种特殊的标记,在程序在编译或 ...
- Java注解annotation invalid type of annotation member
文章目录 Java注解annotation : invalid type of annotation member 1.什么是invalid type of annotation member 2.哪 ...
- Java 注解(Annotation)使用方法归纳
Java注解Annotation使用方法归纳 简介 注解是从JDK5开始支持,是Java对元数据的一种特殊支持.与注释有一定区别,可以理解为代码上的特殊标记,通过这些标记我们可以在编译,类加载,运行等 ...
- Java注解Annotation的用法 - 自定义Annotation实现
Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据. Java语言中的类.方法.变量.参数和包等都可以被标注.和Javadoc不同,Java标注可以通过反射获取标 ...
- 深入理解Java注解Annotation之注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了.使用注解的过程中,很重要的一部分就是创建于使用注解处理器.Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处 ...
- 深入理解Java注解Annotation及自定义注解
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5. ...
最新文章
- 当CPU飙高时,它在做什么
- memcpy-结构体的复制
- 在Nginx上配置多个站点
- python中bin是什么意思_Python之一、#!/usr/bin/python到底是什么意思
- 图解使用CygWin进行Linux操作和编程
- x722网卡支持百兆吗_同样是无线网卡,为什么要选千兆的?
- pandas.read_csv参数详解
- RabbitMQ的5种队列_Work模式_入门试炼_第5篇
- 微信、企业微信和支付窗 SDK 三合一,JeeWx-api 1.2.0 版本发布
- 就9.5面试做个小结
- Linux环境下编程有哪些优势?
- Cinesamples CineOrch for Mac(电影管弦乐队音色库)v2.0特别版
- 矩阵分解-Cholesky分解
- springboot呼伦贝尔旅游网站的设计与实现毕业设计源码091833
- 东瓜小知识之《简单查询网卡的厂商信息》
- Appium+Python MAC安装Android夜神模拟器(二)
- 数字微镜器件(DMD)呈现不同灰度(强度)原理的验证实验
- SQL中AND和OR同时使用的注意事项
- 北师大版图形的旋转二教案_北师大版数学六年级下册《图形的旋转(二)》教案疲惫不堪的意思...
- 假如你收到了一封来自Twoo的邮件...