码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 暑期JAVA学习(44)注解


    注解

        • 一、注解概述
          • (1)什么是注解
          • (2)注解的作用是什么
        • 二、自定义注解
          • (1)自定义注解的格式
          • (2)具体实现
          • (3)特殊属性
        • 三、元注解
          • (1)什么是元注解
          • (2)元注解有两个
            • ①@Target中可使用的值定义在ElementType枚举类中,常用值如下
            • ②@Retention中可使用的值定义在RetentionPolicy枚举类中,常用值如下
            • ③具体使用
        • 四、注解解析
          • (1)什么是注解解析
          • (2)与注解解析相关的接口
          • (3)解析注解的技巧
          • (4)注解解析的案例
            • 需求
            • 分析
          • (5)具体实现
            • ①注解作用在类
            • ②注解作用成员方法
        • 五、注解的应用场景一:junit框架
          • (1)模拟Junit框架
            • 需求
            • 分析
            • 具体实现

    一、注解概述

    (1)什么是注解

    ●Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。

    ●Java 语言中的类、构造器、方法、成员变量、参数等都可以被注解进行标注。

    在这里插入图片描述

    (2)注解的作用是什么

    ●对Java中类、方法、成员变量做标记,然后进行特殊处理,至于到底做何种处理由业务需求来决定。

    ●例如:JUnit框架中,标记了注解@Test的方法就可以被当成测试方法执行,而没有标记的就不能当成测试方法执行。

    二、自定义注解

    (1)自定义注解的格式

    ●自定义注解就是自己做一个注解来使用。

    在这里插入图片描述

    (2)具体实现

    在这里插入图片描述
    在这里插入图片描述

    (3)特殊属性

    ●value属性,如果只有一个value属性的情况下,使用value属性的时候可以省略value名称不写
    在这里插入图片描述

    ●但是如果有多个属性, 且多个属性没有默认值,那么value名称是不能省略的。

    三、元注解

    (1)什么是元注解

    ●元注解:就是注解注解的注解

    (2)元注解有两个

    ● @Target: 约束自定义注解只能在哪些地方使用

    ● @Retention:申明注解的生命周期

    ①@Target中可使用的值定义在ElementType枚举类中,常用值如下

    ● TYPE,类,接口
    ● FIELD, 成员变量
    ● METHOD, 成员方法
    ● PARAMETER, 方法参数
    ● CONSTRUCTOR, 构造器
    ● LOCAL_VARIABLE, 局部变量

    ②@Retention中可使用的值定义在RetentionPolicy枚举类中,常用值如下

    ●SOURCE: 注解只作用在源码阶段,生成的字节码文件中不存在
    ●CLASS: 注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值.
    ●RUNTIME:注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)

    ③具体使用

    在这里插入图片描述
    在这里插入图片描述

    四、注解解析

    (1)什么是注解解析

    ●注解的操作中经常需要进行解析,注解的解析就是判断是否存在注解,存在注解就解析出内容

    (2)与注解解析相关的接口

    ●Annotation: 注解的顶级接口,注解都是Annotation类型的对象
    ●AnnotatedElement:该接口定义了与注解解析相关的解析方法

    方法说明
    Annotation[] getDeclaredAnnotations()获得当前对象上使用的所有注解,返回注解数组
    T getDeclaredAnnotation(Class annotationClass)根据注解类型获得对应注解对象
    Field getDeclaredField​(String name)判断当前对象是否使用了指定的注解,如果使用了则返回true,否则false

    ●所有的类成分Class, Method , Field , Constructor,都实现了AnnotatedElement接口他们都拥有解析注解的能力:

    (3)解析注解的技巧

    ●注解在哪个成分上,我们就先拿哪个成分对象。
    ●比如注解作用成员方法,则要获得该成员方法对应的Method对象,再来拿上面的注解
    ●比如注解作用在类上,则要该类的Class对象,再来拿上面的注解
    ●比如注解作用在成员变量上,则要获得该成员变量对应的Field对象,再来拿上面的注解

    (4)注解解析的案例

    需求

    ●注解解析的案例

    分析

    ①定义注解BookNew,要求如下:

    • 包含属性:String value() 书名
    • 包含属性:double price() 价格,默认值为 100
    • 包含属性:String[] authors() 多位作者
    • 限制注解使用的位置:类和成员方法上
    • 指定注解的有效范围:RUNTIME

    ②定义BookStore类,在类和成员方法上使用Book注解

    ③定义AnnotationDemo04测试类获取BookNew注解上的数据

    (5)具体实现

    ①注解作用在类

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ②注解作用成员方法

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    五、注解的应用场景一:junit框架

    (1)模拟Junit框架

    需求

    ●定义若干个方法,只要加了MyTest注解,就可以在启动时被触发执行

    分析

    ①定义一个自定义注解MyTest,只能注解方法,存活范围是一直都在。

    ②定义若干个方法,只要有@MyTest注解的方法就能在启动时被触发执行,没有这个注解的方法不能执行。

    具体实现

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    大数据必学Java基础(九十二):JDBC初识
    【MySQL】SQL优化
    建模干货:关于ZBrush拓扑的必学技能
    这82道 Spring Boot 面试题都答不上来?如何硬钢面试官
    python电影数据可视化分析系统的设计与实现【附源码】
    中国地图坐标系转换详解:从WGS-84到GCJ-02再到BD-09
    云原生之深入解析Redis On K8S编排部署与实战操作
    ThreadLocal底层源码分析
    2022年度新星,4款一见倾心的黑马软件,让你找不到拒绝的理由
    hadoop生态圈面试精华之Yarn
  • 原文地址:https://blog.csdn.net/xjl243636988/article/details/126294733
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号