摘要:自定义注解上面是一个自定义的注解类,使用元注解来定义自定义注解,自定义注解的函数名就是参数名,函数返回类型是变量的类型。自定义注解来对字段进行一定的约束如在通信的双方。
在我们编程过程中,会经常需要使用到注解,在使用spring进行应用构建的过程中会使用到非常多的spring注解。这篇就来谈一谈我们是如何去定义自己的注解在程序中进行使用的。
0x01 元注解jdk1.8给我们提供了如下注解:
1.@Target 2.@Retention 3.@Documented 4.@Inherited 5.@Native 6.@Repeatable
上面这些类型都在jdk提供的java.lang.annotation包下,下面介绍两个常用的注解类:
一、Target:描述注解的作用范围,表示这个注解能用在什么什么地方。取值(ElementType)有:
1.CONSTRUCTOR:用于描述构造器 2.FIELD:用于描述域 3.LOCAL_VARIABLE:用于描述局部变量 4.METHOD:用于描述方法 5.PACKAGE:用于描述包 6.PARAMETER:用于描述参数 7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
上面的定义都在java.lang.annotation.ElementType类中。
二、Retention:描述注解的生命周期。取值有如下几个(定义在java.lang.annotation.RetentionPolicy中):
1.SOURCE:源文件 2.CLASS:class文件 3.RUNTIME:运行时
平时我们用的比较多的值是RUNTIME,注解在运行时生效。
0x02 自定义注解@Documented @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.FIELD}) public @interface NotNull { public String value() default "1234"; }
上面是一个自定义的注解类,使用元注解来定义自定义注解,自定义注解的函数名就是参数名,函数返回类型是变量的类型。返回类型只能是基本类型、Class、Enum、String,可以通过default来声明参数的默认值。
下面来看下如何使用这个注解:
在类的定义中使用上面自定义的注解类:
public class TypeClass { @NotNull public int intType; public String s; @Override public String toString() { return "TypeClass{" + "intType=" + intType + ", s="" + s + """ + "}"; } }
使用上面定义的类:
TypeClass typeClass = new TypeClass(); Field[] fields = TypeClass.class.getDeclaredFields(); for (Field field : fields) { NotNull annotation = field.getAnnotation(NotNull.class); if(annotation != null) { System.out.println(field.getName() + " " +annotation); System.out.println("CFNotNull value: " + annotation.value()); } }
上面的示例中可以拿到TypeClass的所有字段,然后逐个去判断字段的注解,根据自己定义的注解去做不同的逻辑操作。
0x03 使用场景1.开篇就提到了spring中我们会用到很多注解。
2.自定义注解来对字段进行一定的约束(如在通信的双方)。
3.对注解修饰的对象进行说明限制(比如mvc应用对权限进行集中控制)。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65157.html
摘要:注解有以下几个知识点元数据注解的分类内置注解自定义注解注解处理器本文先介绍前面个知识点元数据注解的分类内置注解自定义注解。注解相当于是一种嵌入在程序中的元数据,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效。 大家好,我是乐字节的小乐,上次说过了Java多态的6大特性|乐字节,接下来我们来看看Java编程里的注解。showImg(https://segme...
摘要:项目介绍日志脱敏是常见的安全需求。常见的脱敏内置方案。支持用户自定义注解。自定义注解导入自定义注解新增功能。策略优先级优先生效,然后是系统内置注解,最后是用户自定义注解。让这些的密码不进行脱敏定义测试对象定义一个使用自定义注解的对象。 项目介绍 日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强。编写起来又特别麻烦。 本项目提供基于注解的方式,并且内置了常见的脱敏...
摘要:注解概念注解也被成为元数据为我们在代码中添加信息提供了一种形式化的方式,使我们可以在稍后的某个时刻更容易的使用这些数据。 注解 概念 注解(也被成为元数据)为我们在代码中添加信息提供了一种形式化的方式,使我们可以在稍后的某个时刻更容易的使用这些数据。 注解是 Java 5 所引入的众多语言变化之一: 注解使得我们可以以编译器验证的格式存储程序的额外信息 注解可以生成描述符文件,甚至是...
摘要:我们定义注解元素时,经常使用空字符串作为默认值。也经常使用负数比如表示不存在的含义示例既可以修饰方法,也可以修饰类运行时使用关键字定义注解成员以无参无异常方式声明。方法的名称就是参数的名称可以使用为成员指定一个默认值浙江大学清华大学张三 Java知识点总结(注解-自定义注解) @(Java知识点总结)[Java, 注解] 使用@interface自定义注解时,自动继承了java.lan...
摘要:知识点自定义注解的使用首先我们先介绍自定义注解。元注解的作用就是负责注解其他注解。元注解是一个标记注解,阐述了某个被标注的类型是被继承的。在定义注解时,不能继承其他的注解或接口。 知识点: Java自定义注解、spring aop @aspect的使用 首先我们先介绍Java自定义注解。 在开发过程中,我们实现接口的时候,会出现@Override,有时还会提示写@SuppressWa...
阅读 2315·2021-11-23 10:09
阅读 2890·2021-10-12 10:11
阅读 2598·2021-09-29 09:35
阅读 1342·2019-08-30 15:53
阅读 2266·2019-08-30 11:15
阅读 2908·2019-08-29 13:01
阅读 2294·2019-08-28 18:15
阅读 3367·2019-08-26 12:13