美文网首页
Java自定义注解

Java自定义注解

作者: xuancaocom | 来源:发表于2019-11-21 14:10 被阅读0次

    一般常见的注解有:

    @Override  检测该注解标注的方法是否是继承自父类(接口)的

    @Deprecated 表示已过时

    @SuppressWarninngs 压制警告,eg:@SuppressWarnings("all") 在类前面加,整个类的警告被压制

    自定义注解

    格式:

    注解格式

    本质:注解本质上就是一个接口,该接口默认继承Annotation接口

          public interface MyAnno extends java.lang.annotation.Annotation{}

    属性:接口中的抽象方法

        要求:1.属性的返回值类型有下列取值

                    *基本数据类型

                    *String

                    *枚举

                    *注解

                    *以上类型的数组

            eg:

    无元注解的自定义注解 枚举 无元数据的自定义注解

            2.定义了属性(方法),在使用时需要给属性赋值

            (1) 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。

            (2) 如果只有一个属性需要赋值,并且属性的名字是value,则value可以省略,直接定义值即可。

            (3) 数组赋值时,值使用{}包裹。如果数组中值只有一个,则{}可以省略。

    eg:

    自定义注解的使用 自定义注解的使用

    元注解 :用于描述注解的注解 

    @Target:描述注解能够作用的位置

        ElementType取值:TYPE:可以作用于类上;METHOD:可以作用于方法上;FIELD:可以作用于成员变量上。

    @Retention:描述注解被保留的阶段

        @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class类字节码文件中,并被JVM读取到。(RetentionPolicy.SOURCE只在源码中,不会到字节码中,RetentionPolicy.CLASS会保留到class类字节码文件中,不会被JVM读取到,一般自定义注解用RUNTIME)

    @Documented:描述注解是否被抽取到api文档中

    @Inherited:描述注解是否被子类继承

    eg:

    带元注解的自定义注解


    带元注解的自定义注解的使用

    在程序使用(解析)注解:获取注解中定义的属性值

    1.获取注解定义的位置的对象(类Class、方法Method、变量Field)

    2.获取指定的注解 *用getAnnotation()

    3.调用注解中的抽象方法获取配置的属性值

    eg:通过注解和反射获取执行ToastDemo类的showToast()方法

    需要被执行的类 执行类

    通过调用ReflectTest类中的runToastDemoMethod()就可以执行ToastDemo类的showToast()方法

    相关文章

      网友评论

          本文标题:Java自定义注解

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