自定义注解 素颜马尾好姑娘i 2022-09-02 04:18 278阅读 0赞 # 什么是注解? # 从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。 **其实说白就是代码里的特殊标志,这些标志可以在编译,类加载,运行时被读取,并执行相应的处理,以便于其他工具补充信息或者进行部署。** # JDK的元Annotation(元注解)? # jdk中包含了一些元注解,主要有@Target,@Retention,@Document,@Inherited,@Result用来修饰注解。 ## @Target ## 用于指定被修饰的注解能用于修饰哪些程序单元,@Target也包含了一个value值 <table> <tbody> <tr> <td>取值</td> <td style="vertical-align:top;">注解使用范围</td> </tr> <tr> <td>METHOD</td> <td style="vertical-align:top;">可用于方法上</td> </tr> <tr> <td>TYPE</td> <td style="vertical-align:top;">可用于类或者接口上</td> </tr> <tr> <td>ANNOTATION_TYPE</td> <td style="vertical-align:top;">可用于注解类型上(被@interface修饰的类型)</td> </tr> <tr> <td>CONSTRUCTOR</td> <td style="vertical-align:top;">可用于构造方法上</td> </tr> <tr> <td>FIELD</td> <td style="vertical-align:top;">可用于域上</td> </tr> <tr> <td>LOCAL_VARIABLE</td> <td style="vertical-align:top;">可用于局部变量上</td> </tr> <tr> <td>PACKAGE</td> <td style="vertical-align:top;">用于记录java文件的package信息</td> </tr> <tr> <td>PARAMETER</td> <td style="vertical-align:top;">可用于参数上</td> </tr> </tbody> </table> ### @Retention ### 用于被修饰的注解可以保存多久,这个注解需要使用参数 <table> <thead> <tr> <th>生命周期类型</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>RetentionPolicy.SOURCE</td> <td>编译时被丢弃,不包含在类文件中</td> </tr> <tr> <td>RetentionPolicy.CLASS</td> <td>JVM加载时被丢弃,包含在类文件中,默认值</td> </tr> <tr> <td>RetentionPolicy.RUNTIME</td> <td>由JVM 加载,包含在类文件中,在运行时可以被获取到</td> </tr> </tbody> </table> ## @Document ## 这个注解用于指定被修饰的注解类将被javadoc工具提取成文档(该注解了解即可) ## @Inherited ## 这个注解指定被他修饰的注解将具有继承性——如果某个类使用了@Xxx,则其子类将自动被@Xxx修饰 ### SpringBoot启动类上默认用了以上的元注解![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI3MDI2NjAz_size_16_color_FFFFFF_t_70][] ### # 自定义注解? # 1、定义一个注解接口,必须需要 **@Retention**元注解 标明生命周期,否则不会生效 package com.liu.annotation; //自定义一个注解 //1、包含了public修饰符 //2、包含了@interface关键词 //3、TestAnno : 为具体的注解名称 //4、注解内容:可以理解为自定义接口 import java.lang.annotation.*; @Target(value = {ElementType.FIELD,ElementType.TYPE}) @Documented @Inherited @Retention(value = RetentionPolicy.RUNTIME) public @interface CustomAnno { String name() default "阿军"; boolean flag(); } 2、写一个实体类,加上自定义注解 package com.liu.annotation; @CustomAnno(flag = false,name = "程序员阿军") public class Emp { private String name; private boolean flag; @Override public String toString() { return "Emp{" + "name='" + name + '\'' + ", flag=" + flag + '}'; } } 3、获取实体类的注解内容 package com.liu.annotation; import java.lang.annotation.Annotation; import java.util.Arrays; public class TestAnno { public static void main(String[] args) { //获取Emp类注解信息 Class<Emp> empClass = Emp.class; CustomAnno customAnno = empClass.getAnnotation(CustomAnno.class); System.out.println(customAnno.name()+"==="+customAnno.flag()); //检查Emp对象是否有自定义注解(CustomAnno) boolean annotationPresent = empClass.isAnnotationPresent(CustomAnno.class); System.out.println(annotationPresent); //获取Emp上的所有自定义的注解 Annotation[] annotations = empClass.getAnnotations(); System.out.println(Arrays.toString(annotations)); } } 4、运行结果 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI3MDI2NjAz_size_16_color_FFFFFF_t_70 1][] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI3MDI2NjAz_size_16_color_FFFFFF_t_70]: /images/20220829/7d4f550be3cf418abe6a3877ebb83b36.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI3MDI2NjAz_size_16_color_FFFFFF_t_70 1]: /images/20220829/3ffcc5ba70fc464ea05426683a8ef2e3.png
相关 自定义注解 自定义注解关键词 @interface。具体实现可参考下面代码。 @Target({ ElementType.FIELD}) @Retention(Reten 本是古典 何须时尚/ 2022年12月05日 09:59/ 0 赞/ 253 阅读
相关 自定义注解 自定义注解 一、注解是什么? 二、使用步骤 1.使用关键字@interface @Target @Retention详解 一、注解是什么 ﹏ヽ暗。殇╰゛Y/ 2022年12月01日 11:57/ 0 赞/ 37 阅读
相关 自定义注解 1、简单介绍注解 注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明 旧城等待,/ 2022年10月09日 03:11/ 0 赞/ 251 阅读
相关 自定义注解 什么是注解? 从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加 素颜马尾好姑娘i/ 2022年09月02日 04:18/ 0 赞/ 279 阅读
相关 自定义注解 首先定义注解类: import java.lang.annotation.; @Documented @Target(ElementType.METHOD) @Ret 一时失言乱红尘/ 2022年07月20日 15:18/ 0 赞/ 311 阅读
相关 自定义注解 package cn.stu; import java.lang.annotation.Documented; import java.lan 本是古典 何须时尚/ 2022年07月15日 18:50/ 0 赞/ 234 阅读
相关 自定义注解 自定义注解 @Retention(RetentionPolicy.RUNTIME) // 元注解:注解的注解。此注解表示使注解保留到运行时。 @Target( ゝ一世哀愁。/ 2022年05月31日 12:24/ 0 赞/ 357 阅读
相关 自定义注解 import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; 谁践踏了优雅/ 2022年03月30日 03:30/ 0 赞/ 351 阅读
相关 自定义注解 转载:[https://my.oschina.net/itblog/blog/1525665][https_my.oschina.net_itblog_blog_1525665 红太狼/ 2022年03月19日 08:51/ 0 赞/ 334 阅读
相关 自定义注解 注解是一种元数据形式,即注解是属于java的一种数据类型,和类、接口、数组、枚举类似。注解用来修饰,类、方法、变量、参数、包。注解不会对所修饰的代码产生直接的 痛定思痛。/ 2021年12月21日 11:51/ 0 赞/ 388 阅读
还没有评论,来说两句吧...