首页 > 其他分享 >十三、注解

十三、注解

时间:2023-02-20 20:23:13浏览次数:33  
标签:自定义 十三 value MyTest Book 注解 属性

一、注解作用

  • 标记

  • 方法重写约束 @Override

  • 函数式接口约束。 @FunctionalInterface

  • 现今最牛逼的框架技术多半都是在使用注解和反射。都是属于框架的底层基础技术

自定义注解的格式:
修饰符 @interface 注解名{
// 注解属性
}

@Book
@MyTest
public class MyBook {
    @Book
    @MyTest
    private MyBook(){

    }
    @Book
    @MyTest
    public static void main(@MyTest String[] args) {
        @MyTest
        @Book
        int age = 12;
    }
}

@interface Book{
}

@interface MyTest{

}

二、注解的属性

属性的格式

  • 格式1:数据类型 属性名();
  • 格式2:数据类型 属性名() default 默认值;

注解可以有属性,属性名必须带()
在用注解的时候,属性必须赋值,除非这个属性有默认值!!

@MyBook(name="《精通Java基础》",authors = {"播仔","Dlei","播妞"} , price = 99.9 )
public class AnnotationDemo01 {
    @MyBook(name="《精通MySQL数据库入门到删库跑路》",authors = {"小白","小黑"} ,
            price = 19.9 , address = "北京")
    public static void main(String[] args) {

    }
}

// 自定义一个注解
@interface MyBook{
    String name();
    String[] authors(); // 数组
    double price();
    String address() default "广州";
}

注解的特殊属性

注解的特殊属性名称:value
value属性,如果只有一个value属性的情况下,使用value属性的时候可以省略value名称不写!!
可以用于写跳转地址之类的。

//@Book(value = "/deleteBook.action")
//@Book("/deleteBook.action")
//@Book(value = "/deleteBook.action" , age = 12)
//@Book("/deleteBook.action")
public class AnnotationDemo01{
}

@interface Book{
    String value();
    int age() default 10;
}

三、元注解

元注解是用来注解自定义注解的

元注解有两个:
@Target:约束自定义注解只能在哪些地方使用,
-- 但是默认的注解可以在类,方法,构造器,成员变量,... 使用。

@Retention:申明注解的生命周期
-- 申明注解的作用范围:编译时,运行时。

@Target

  • 作用:用来标识注解使用的位置,如果没有使用该注解标识,则自定义的注解可以使用在任意位置。
  • 可使用的值定义在ElementType枚举类中,常用值如下
    TYPE,类,接口
    FIELD, 成员变量
    METHOD, 成员方法
    PARAMETER, 方法参数
    CONSTRUCTOR, 构造器
    LOCAL_VARIABLE, 局部变量

@Retention

  • 作用:用来标识注解的生命周期(有效存活范围)
    * 可使用的值定义在RetentionPolicy枚举类中,常用值如下
    * SOURCE:注解只作用在源码阶段,生成的字节码文件中不存在
    * CLASS:注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值.
    * RUNTIME:注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)

四、注解的解析(了解)

注解有哪些属性数据,这都需要进行注解的解析。

五、注解模拟Junit框架

分析:

(1)定义一个自定义注解MyTest.

  • 只能注解方法。
  • 存活范围一直都在。

(2)定义若干个方法,只要有@MyTest注解的方法就能被触发执行!!

  • 没有这个注解的方法不能执行!!

标签:自定义,十三,value,MyTest,Book,注解,属性
From: https://www.cnblogs.com/Gege-1/p/17138798.html

相关文章