java自定义注解案例详解

注解有三种分类: 

注解本质上是一个继承Annotation的接口

第一种为jdk预定义注解

        * @Override    :检测被该注解标注的方法是否是继承自父类(接口)的
        * @Deprecated:该注解标注的内容,表示已过时
        * @SuppressWarnings:压制警告
            * 一般传递参数all  @SuppressWarnings("all")

第二种为元注解

            * @Target:描述注解能够作用的位置
                * ElementType取值:
                    * TYPE:可以作用于类上
                    * METHOD:可以作用于方法上
                    * FIELD:可以作用于成员变量上
            * @Retention:描述注解被保留的阶段
                * @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
            * @Documented:描述注解是否被抽取到api文档中
            * @Inherited:描述注解是否被子类继承

第三种为自定义注解

3.1 自定义注解可定义属性列表(抽象方法)

                1. 属性的返回值类型有下列取值
                    * 基本数据类型
                    * String
                    * 枚举
                    * 注解
                    * 以上类型的数组

                2. 定义了属性,在使用时需要给属性赋值
                    1. 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。
                    2. 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。
                    3. 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略

3.2 自定义注解案例

3.3 自定义注解获取属性值原理

            * getAnnotation(Class)
            //其实就是在内存中生成了一个该注解接口的子类实现对象

                    public class ProImpl implements Pro{
                        public String className(){
                            return "[ 定义属性值]";
                        }
                        }
                    }

输出结果:

猜你喜欢

转载自blog.csdn.net/Growing_hacker/article/details/109093040