• 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_16_注解_自定义注解_元注解









    例如查看@Overide的注解
    @Target作用是位置,,作用在类上面,还是作用在方法上面
    @Retention是它能被保留到什么时候。三个阶段。源码、class、runtime


    定义注解类

    改成@interface

    在创建类的时候可以选择为Annotation类型。

    Target

    taget里面就一个属性,叫做value

    它的类型是ElementType[]这个类型的

    它其实就是一个枚举类型


    所以我们就可以这么去使用



    我们作用在MyAnno3这个类上


    作用在方法上可以吗?在方法上加上就会报错,。



    成员变量上也不能加




    value值是一个数组,加上作用域Method方法上。

    再加一个作用字段上。这样既可以作用方法、类、成员变量上这三种都可以。


    Retention

    源码中对应的类型

    RetentionPlicy也是一个枚举类型。分别对应的是源码阶段、class阶段、runtime阶段

    一般都是加Runtime这个级别的注解


    如果设置Class级别。也会保留到字节码中。但是不会被JVM识别


    如果设置为Source。连字节码文件中都不会存在

    Documented

    将来这个注解描述的这些信息会被抽获取到javadoc的文档中。

    桌面上新建文件夹2 然后把Worker.java这个类复制过来。



    删除相关代码后。


    MyAnno3也复制过来



    内容全剪切掉


    修改文件的格式

    然后把内容再粘贴回来。并保存这个文件。

    worker这个类同上,先剪切,再修改格式为 ANSI格式编码。然后再粘贴回来。


    右键打开命令行





    在这个文件夹内生成api文档

    生成后查看,注解被保留了


    show方法上面的注解也被保留了

    name上的注解没有被保留


    所说义这个@Documented 可以被抽获取到javadoc文档中的

    如果下面这里把 @Documented 这个注解删掉。


    删掉后,重新生成API文档


    那么在Worker类里面加的这个几个注解会不会在API中体现?

    删掉后,就不会体现了。、虽然加了注解的描述的。但是因为去掉了@Documented这段代码。所以不会在文档中体现

    @Inherited

    表示这个注解是否会被继承

    表示这个注解会自动被此类继承

    新建一个Teacher类

    Teacher继承Worker这个类。在Teacher类没有加注解。

    但是worker这个类有注解。那么Teacher会继承类上面的 @MyAnno3的这个注解。

    总结


    比较常用的注解就是前两个

     

  • 相关阅读:
    AGC007题解
    博弈论学习笔记
    ZROI2019 提高十连测
    男人八题2019
    LOJ 2840「JOISC 2018 Day 4」糖
    CF671D Roads in Yusland
    网络流套路小结
    BZOJ 3729 GTY的游戏
    AGC036C GP 2
    BZOJ 5046 分糖果游戏
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11289586.html
Copyright © 2020-2023  润新知