自定义注解

简介: 自定义注解

自定义注解

概述

通常自定义注解需要@Target @Retention @Inherited @Documented这四个注解修饰

@Target

@Target:注解的作用目标,就是这个自定义注解可以放在程序的那个部分

@Target(ElementType.TYPE)——接口、类、枚举、注解
@Target(ElementType.FIELD)——字段、枚举的常量
@Target(ElementType.METHOD)——方法
@Target(ElementType.PARAMETER)——方法参数
@Target(ElementType.CONSTRUCTOR) ——构造函数
@Target(ElementType.LOCAL_VARIABLE)——局部变量
@Target(ElementType.ANNOTATION_TYPE)——注解
@Target(ElementType.PACKAGE)——包

例子

自定义注解1

我们发现Target({ElementType.TYPE})是作用于类的而现在作用与方法 所有会报错

@Retention

@Retention:注解的保留位置,就是这个自定义注解的生命周期

RetentionPolicy.SOURCE:这种类型的Annotations只在源代码级别保留,编译时就会被忽略,在class字节码文件中不包含。
RetentionPolicy.CLASS:这种类型的Annotations编译时被保留,默认的保留策略,在class文件中存在,但JVM将会忽略,运行时无法获得。
RetentionPolicy.RUNTIME:这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用。

@Document

说明该注解将被包含在javadoc中,例如@Param @Author

@Inherited

说明子类可以继承父类中的该注解

例子

![](https://myblogtuchang.oss-cn-beijing.aliyuncs.com/resources-master/Target.png

结果

可以看出加了@testAnn1与@testAnn2都修饰了exSql类,但我们现在exSql2继承exSql,获取其注解发现只有@testAnn1

可以看出@testAnn1与@testAnn2的区别就是是否被@Inherited注解修饰 说明加了@Inherited注解 子类可以继承父类的这个加了@Inherited 的注解

目录
相关文章
|
2月前
自定义注解
自定义注解
11 1
|
6月前
|
Java 编译器 数据安全/隐私保护
自定义注解与AOP结合使用
自定义注解与AOP结合使用
62 0
|
7月前
|
Java
简单、快速教你自定义注解
简单、快速教你自定义注解
41 0
|
5月前
|
Java
springmvc之自定义注解-->自定义注解简介,基本案例和aop自定义注解
springmvc之自定义注解-->自定义注解简介,基本案例和aop自定义注解
34 0
|
5月前
自定义注解和AOP
自定义注解和AOP
30 0
|
9月前
|
XML 存储 Java
java注解-自定义注解的实现
java注解-自定义注解的实现
93 0
|
10月前
|
XML Java 编译器
【学习总结】注解和元注解
【学习总结】注解和元注解
【学习总结】注解和元注解