自定义注解

简介: 自定义注解

自定义注解

概述

通常自定义注解需要@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 的注解

目录
相关文章
|
10月前
|
Java 编译器 数据安全/隐私保护
自定义注解与AOP结合使用
自定义注解与AOP结合使用
86 0
|
11月前
|
Java
简单、快速教你自定义注解
简单、快速教你自定义注解
57 0
|
3月前
|
Java Spring
自定义注解+AOP
自定义注解+AOP
37 1
|
4月前
|
存储 缓存 Java
自定义注解
本文介绍了如何在Java中使用自定义注解。首先,通过示例展示了创建`User`类、`UserDAO`、`UserService`和`Controller`的基本流程。接着,定义了一个名为`CustomAnnotation`的自定义注解,用于方法上,并解释了`@Documented`、`@Retention`和`@Target`的作用。然后,通过AOP(面向切面编程)在Controller中使用自定义注解,展示了如何在方法执行前进行拦截处理。最后,提到了自定义注解可以用于登录检查的场景,通过定义`@Login`注解和过滤器来实现。总之,本文以一个简单的例子阐述了Java中自定义注解的创建和应用。
|
9月前
|
Java
springmvc之自定义注解-->自定义注解简介,基本案例和aop自定义注解
springmvc之自定义注解-->自定义注解简介,基本案例和aop自定义注解
43 0
|
9月前
自定义注解和AOP
自定义注解和AOP
38 0
|
XML Java 编译器
【学习总结】注解和元注解
【学习总结】注解和元注解
【学习总结】注解和元注解
|
XML 存储 Java
java注解-自定义注解的实现
java注解-自定义注解的实现
116 0
Java注解--元注解
元注解的个人总结
|
Oracle Java 关系型数据库
反射与自定义注解
反射与自定义注解
反射与自定义注解