Java 注解

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

作用在代码上的注解:

  • @Override                   检查该方法是否为重写方法。若其父类,或是实现的接口中没有该方                                         法时,编译错误。
  • @Deprecated              标记过时方法。若使用该方法,报编译警告。
  • @SuppressWarnings   让编译器去忽略注解中声明的警告。

 元注解(注解上的注解,即最基础的)4+3共7个:

  • @Retention         标识该注解是保存在在代码中、.class文件中,在运行时可通过反射访问。
  • @Documented    标记该注解是否包含在用户文档中。
  • @Target              标记该注解的使用范围(类,接口,包等)。
  • @Inherited          标记该注解继承于哪个注解类(默认没继承于任何子类)

  • @SafeVarargs              Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调                                        用产生的警告。
  • @FunctionalInterface   Java 8 开始支持,标识一个匿名函数或函数式接口。
  • @Repeatable               Java 8 开始支持,标识某注解可以在同一个声明上使用多次。

Annotion架构

           @Target 用于标记该注解的使用范围(类,接口,包等)。@Target可指定多个元素类型,中间用逗号隔开。

  • ElementType.TYPE:表示该注解可应用到类、接口、枚举、注解类型等上。
  • ElementType.FIELD:表示该注解可应用字段声明。
  • ElementType.METHOD:表示该注解可应用到方法上。
  • ElementType.PARAMETER:表示该注解可应用到方法参数上。
  • ElementType.CONSTRUCTOR:表示该注解可应用到构造方法上。
  • ElementType.LOCAL_VARIABLE:表示该注解可应用到局部变量上。
  • ElementType.ANNOTATION_TYPE:表示该注解可应用到注解类型上。
  • ElementType.PACKAGE:表示该注解可应用到包上。

            @Retention用于表示该注解是保存在在代码中、.class文件中,还是到运行时

  • RetentionPolicy.SOURCE:注解只保留在源文件,当.java文件编译成.class文件时,注解会被丢弃
  • RetentionPolicy.CLASS:注解被保留到.class文件,jvm加载.class文件时候被丢弃,是默认的生命周期
  • RetentionPolicy.RUNTIME:注解不仅被保存到.class文件中,jvm加载class文件之后还会存在

注解的作用

SOURCE ——》APT(Annotation Processor Tools) 用于生成额外的辅助类

//自定义标注,用于参数检查
public class build{
    @buildinspect
    private static int mCurrentDay;

    enum Weekday{
        SUNDAY,
        MONDAY
    }

    @InDef({Weekday.SUNDAY,Weekday.MONDAY}) //限定参数
    @Target({ElementType.PARAMETER,ElementType.FIELD})
    public @interface buildinspect { //自定义标注,用于参数检查
    }

    public static void setDay(Weekday curday){mCurrentDay = curday};
    public static void setDay(@buildinspect int curday){mCurrentDay = curday};
}

CLASS——》字节码增强,编译class文件后,判断是否注解实现修改代码的逻辑(插桩技术)

RUNTIME——》反射,通过反射技术动态获取注解与其元素,从而实现不容逻辑判定

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值