美文网首页
Java注解的学习总结

Java注解的学习总结

作者: 132xin | 来源:发表于2020-08-03 22:32 被阅读0次

注解的声明

注解的声明与接口类似,只不过在interface前面要加一个@,注解(@interface)是一种定义类型,它是在JDK 5.0中引入的。注解也存在成员变量,但是与类不同的是注解是没有方法的。

/**
 * 定义一个注解
 */
public @interface MyAnnotation {
    //注解的成员变量,没有方法
    String name();
    int age();
}

注解还可以给变量定义默认值,如果注解的变量已经被默认值,在使用的时候可以不为注解的成员变量赋值,而是直接使用默认值。

/**
* 定义一个注解
*/
public @interface MyAnnotation {
   //注解的成员变量,没有方法
   //赋默认值
   String name() default "Annotation";
   int age() default 18;
}

注解的分类

根据注解是否包含成员变量,可以将Annotation分为两类:

  • 标记注解
    标记注解是指没有包含成员变量的注解。例如Java内置的注解@Override注解
  • 元数据注解
    元数据注解指的是包含成员变量的注解,这类注解可以接受更多的元数据。

元注解

元注解可以理解为注解的注解。用来提供对给其他注解类型做说明的。JDK中提供了如下4元注解

@Target
@Retention
@Documented
@Inherited

@Target注解

指定Annotation用于修饰哪些程序元素。@Target也包含一个名为'' value''的成员变量,该value成员变量类型为ElementType[],该类型是枚举类型,值有如下几个:

public enum ElementType {

    TYPE,//能修饰类,接口和枚举类型
    FIELD,//能修饰成员变量
    METHOD,//能修饰方法
    PARAMETER,//能修饰参数
    CONSTRUCTOR,//能修饰构造器
    LOCAL_VARIABLE,//能修饰局部变量
    ANNOTATION_TYPE,//能修饰注解
    PACKAGE,//能修饰包
    /**
     * 1.8之后增加了两个
     */
    TYPE_PARAMETER,//能使用修饰自定义的参数
    TYPE_USE//能使用在使用类型的任意语句中
}

使用实例:该注解只能使用在成员变量和方法中

@Target({ElementType.METHOD,ElementType.FIELD})
public @interface MyAnnotation {
    //注解的成员变量,没有方法
    //赋默认值
    String name() default "Annotation";
    int age() default 18;
}
@Retention

这个注解定义了该注解可以保留多长的时间,某些注解仅出现在源代码中,而被编译器丢弃,另一些且被编译在class文件中等。@Retention的值'value'可以决定该注解保留的时间,在使用@Retention的时候一定要指定value的值。value的值有以下这些:

public enum RetentionPolicy {
    /**
     * Annotations只保留在源代码中.
     */
    SOURCE,

    /**
     * 编译器把Annotation记录在class文件中,当运行Java程序时,
     * JVM中不在保留该Annotation
     */
    CLASS,

    /**
     * 编译器把Annotation记录在class文件中,当运行Java程序时,
     *  并且JVM中保留该Annotation,可以通过反射获取Annotation的值
     */
    RUNTIME
}
@Documented

@Documented是一个标记注解,如果定义注解中使用了@Documented修饰定义,则在用javadoc命令生成API文档后,所有使用注解MyAnnotation修饰的程序元素,将会包含注解MyAnnotation的说明。

@Inherited

@Inherited是一个标记注解,指定注解具有继承性。要注意的是它并不是说注解本身可以继承,而是说如果一个父类被@Inherited注解过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了父类的注解。

参考链接:https://blog.csdn.net/qq_20521573/article/details/82054088

相关文章

  • 菜鸟学服务端技术----Spirng基础

    注解 Java基础加强总结(一)——注解(Annotation) java中的注解是如何工作的? java 注解 ...

  • Java注解

    java注解知识总结

  • Java注解总结(一)

    Java注解总结(一) 什么是注解 Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊...

  • 10.7java高级-注解

    java高级-注解 注解概念 注解分类 Andriod support annotations 总结 1.注解概念...

  • Java注解 学习总结

    注解可以理解为是一套必须带有默认值的接口方法,相比接口,注解在代码中更像是一种描述或者标记。Java里有三种标准注...

  • Java注解学习总结

    一、注解的概念 注解(Annotation),也叫元数据(Metadata)。注解与类、接口、枚举在同一个层次,并...

  • Java注解的学习总结

    注解的声明 注解的声明与接口类似,只不过在interface前面要加一个@,注解(@interface)是一种定义...

  • 关于Java注解学习总结

    什么是注解 注解是 Java 5 的一个新特性。注解是插入你代码中的一种注释或者说是一种元数据(meta data...

  • Java学习总结之注解

    什么是注解? Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制...

  • Android详解(五)新的技术

    花五个月时间来系统学习这五个部分 注解 Java注解(1)-基础Java注解(2)-运行时框架Java注解(3)-...

网友评论

      本文标题:Java注解的学习总结

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