美文网首页
Java笔记——注释(Annotation)

Java笔记——注释(Annotation)

作者: Troll4it | 来源:发表于2018-07-31 09:39 被阅读24次
    Fighting.jpg

    Annotation 是一个接口,程序可以通过反射来获取指定程序元素的Annotation对象,通过Annotion对象来取得注解里的元数据。有的Annotation指的是java.lang.Annotation接口,有的是的是注解本身。

    @Override 限定重写父类方法

    @Override指定方法覆载的,强制一个子类覆盖父类;作用:让编译器检查这个方法,保证父类要包含一个被该方法重写方法。</br>
    只能修饰方法,不能修饰其他元素

    @Deprecated 标示已过时

    @SuppressWarnings 抑制编译器警告

    @SuppressWarnings指示被该Annotation修饰的程序取消元素(会作用该程序元素的所有子元素《假如 某个类中有编译器警告,类中也有编译器警告,只需要注释类的编译器警告就好》)显示指定的编译器警告

    @FunctionalInterface

    @FunctionalInterface规定如果接口只有一个抽象方法(可以包含多个默认方法或多个static方法,)该接口就是函数式接口。@FunctionalInterface用来指定某个接口必须是函数式接口。</br>
    @FunInterface只能修饰接口,不能修饰其他程序元素

    JDK的元Annotation,元Annotation可以修饰其他的Annotation定义。

    @Retention

    • 只能修饰Annotation定义,指定被修饰的Annotation可以保留的时长
    • @Retention包含一个RetentionPplicy类型的value成员变量,因此使用@Retention时必须为value成员变量指定值。
      • RetentionPolicy.CLASS :编译器被Annotaion记录在class文件中。当运行Java程序时,JAM不可获取Annotation信息。这是默认值
      • RetentionPolicy.RUNTIME:编译器将把Annotation记录在class文件中。当运行Java程序时,JVM也可以获取Annotation信息,程序可以通过反射获取该Annotation信息
      • RetentiionPoicy.SOURCE:Annotation只保留在源代码中,编译器直接丢弃这种Annotation

    如果需要获取注解的信息,就需要注解value的属性值为RetentionPolicy.RUNTIME的@Retention</br>

    @Retention(Retention.CLASS)  
    @Retention(Retention.RUNTIME)
    @Retention(Retention.SOURCE)
    

    @Target

    @Target也只能修饰一个Annotation定义,用于指定被修饰Annotation鞥用于修饰哪些程序单元。 @Target元Annotation也包含一个名为value的成员变量。

    • ElementType.ANNOTATION_TYPE :指定该策略的Annotation只能修饰Annotation
    • ElementType.CONSTRUCTOR :指定该策略的Annotation只能修饰构造器
    • ElementType.FIELD: 指定该策略的Annotation只能修饰成员变量
    • ElementType.LOCAL_VARIABLE:指定该策略的Annotation只能修饰局部变量
    • ElementType.METHOD : 指定该策略的Annotation只能修饰方法定义
    • ElementType.PACKAGE :指定该策略的Annotation只能修饰包定义
    • ElementType.PARAMETER: 指定该策略的Annotation 可以修饰参数
    • ElementType.TYPE : 指定该策略的Annotation可以修饰类、接口或者枚举定义。

    使用方法更Retention有点类似

    @Target(ElementType.FIELD)
    
    

    @Documented

    @Documented 指定该元Annotation修饰的Annotation类将被javadoc工具提取为文档,如果定义Annotation类时使用过@Documented修饰,则所有使用该Annotation修饰的程序元素的API文档中将会包含Annotation说明。

    相关文章

      网友评论

          本文标题:Java笔记——注释(Annotation)

          本文链接:https://www.haomeiwen.com/subject/lejcvftx.html