java基础-注解机制

java基础-注解机制

  • 注解基础

    • 作用

      • 生成文档,通过代码里标识的元数据生成javadoc文档
      • 编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证
      • 编译时动态处理,编译时通过代码里的元数据动态处理,例如动态生成代码
      • 运行时动态处理,运行时通过代码里的元数据动态处理,例如使用反射注入实例
    • Java内置注解

      • 内置注解-@Override:表示当前方法定义将覆盖父类中的方法

        • 用来修饰方法,且只在编译期间有效,编译后的字节码文件中便不再存在,标识此注解的方法,编译器会检查该方法与父类中的方法签名是否相同(重写),若不同则会报错。
      • 内置注解-@Deprecated:代码被弃用

        • 能够保留到运行时
        • 修饰构造方法、属性、局部变量、方法、包、参数、类型
      • 内置注解-@SuppressWarnings:表示关闭编译器警告信息

        • 只能存活在源码时
        • 修饰类型、属性、方法、参数、构造器、局部变量
    • 元注解

      • 元注解-@Target:描述注解的使用范围

        • public enum ElementType {
        • TYPE, // 类、接口、枚举类
        • FIELD, // 成员变量(包括:枚举常量)
        • METHOD, // 成员方法
        • PARAMETER, // 方法参数
        • CONSTRUCTOR, // 构造方法
        • LOCAL_VARIABLE, // 局部变量
        • ANNOTATION_TYPE, // 注解类
        • PACKAGE, // 可用于修饰:包
        • TYPE_PARAMETER, // 类型参数,JDK 1.8 新增
        • TYPE_USE // 使用类型的任何地方,JDK 1.8 新增
        • }
      • 元注解-@Retention&@RetentionTarget:注解保留的时间范围

        • public enum RetentionPolicy {
        • SOURCE,    // 源文件保留
        • CLASS,       // 编译期保留,默认值
        • RUNTIME   // 运行期保留,可通过反射去获取注解信息
        • }
      • 元注解-@Documented:描述在使用javadoc工具生成文档时是否保留注解信息

      • 元注解-@Inherited:被该注解修饰的注解会具有继承性

      • 元注解-@Repeatable(java8)

      • 元注解-@Native(java8)

    • 注解与反射接口

      • 反射包java.lang.reflect下的Annotated Element接口提供了获取注解中内容的方法
      • 注:只有注解被修饰为RUNTIME后该注解才是运行时可见的,当class文件被装载时被保存在class文件中的注解才会被虚拟机读取。
    • 自定义注解

      • 01fc07d04f8458ee5c8747fa258959ae.png
  • 深入理解注解

    • java8提供的新注解

    • 注解支持继承吗?

      • 注解并不支持继承, 但注解在编译后,编译器会自动继承java.lang.annotation.Annotation接口.
    • 注解的实现原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值