自定义注解

1、注解

  • 注解本质上是一个就是一个接口,但与接口类型定义不一样。

    1、定义格式

  • 复习 :接口可以定义哪些成分常量 方法 1.抽象方法 2.默认方法 3.静态方法 4.私有方法

  • 注解可以定义什么成分?常量 抽象方法【属性】 只能抽象方法(返回值类型必须是特定的,必须是无参的) 特定的返回值类型 : String,Class,注解类型,枚举类型 , 基本数据类型,以及这些类型的一维数组。

    1. @interface修饰符
    2. @interface 注解名{
    3. // 常量 // 抽象方法 【注解中的抽象方法我们称为属性】
    4. 类型 属性名();
    5. // 使用的过程在给属性赋值
    6. 类型 属性名() default 值;
    7. // 也可以在定义的过程中给出默认值
    8. }

    内容小结

    请写出注解定义的格式?
    修饰符 @interface 注解名{
    属性类型 属性名();
    属性类型 属性名() default 值;
    }
    注解中属性类型可以是哪些?
    String ,Class ,注解 ,枚举,基本数据 , 以及这些类型的一维数组

    注解的使用

    1、注解使用格式

    1. @注解名(属性=值 , 属性=值 ... )
    2. @Book(name="西游记" , price=200 , author={"吴承恩" , "张三"})

    注意事项:

  • 自定义注解主要是可以给某些成分注入信息,注入一些数据

    • 可以使用在类上,成员变量上,构造方法上,方法上 …
    • 有默认值的属性,可以不用进行赋值,也可以重新修改值
    • 如果属性是数组,赋值时若有多个数据需要使用大括号括起来,逗号分隔数据 , 如果数组中只有一个元素, 那么大括号可以省略

      2、注解中特殊的属性名value

  • 如果注解中只有一个属性要赋值,而且名字是value。可以将value给省略,可以直接给值

    3、小结

    注解使用格式 ? :::tips @注解名(属性名=值 , …)
    1 如果是具有默认值的属性,可以不赋值
    2 如果属性类型是数组,赋值多个值时要用大括号 , 数组中如果只有一个数据值, 大括号可以省略 ::: 特殊属性名value,赋值特点 ? :::tips 如果注解只有一个属性要赋值,而且名字是value,可以直接给值 :::