java高级——注解

目录

  • 什么是注解
  • 注解使用场景
  • 自定义注解
  • 注解的本质
  • 元注解
    • @Target注解
    • @Retention注解
  • 注解的解析
    • 注解解析的概述
    • 注解解析的案例
  • 应用场景案例
    • 需求
    • 分析
    • 实现步骤
    • 运行结果

什么是注解

注解就是Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。

注解使用场景

  1. 比如:Junit框架的@Test注解可以用在方法上,用来标记这个方法是测试方法,被@Test标记的方法能够被Junit框架执行。
  2. 再比如:@Override注解可以用在方法上,用来标记这个方法是重写方法,被@Override注解标记的方法能够被IDEA识别进行语法检查。
  3. 注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。

上面我们说的@Test注解、@Overide注解是别人定义好给我们用的,将来如果需要自己去开发框架,就需要我们自己定义注解。

自定义注解

就是自己定义注解。

public @interface 注解名称{ 
    public 属性类型 属性名()default 默认值,
}

比如:现在我们自定义一个MyTest注解,注意在idea新建的时候不是class了,而是Annotation

public @interface MyTest1{
   
    String aaa();//一定要带小括号 前面的public可以不写 默认自动帮你写了
    boolean bbb() default true;	//default true 表示默认值为true,使用时可以不赋值。
    String[] ccc();
}

定义好MyTest注解之后,我们可以使用MyTest注解在类上、方法上等位置做标记。注意使用注解时需要加@符号,如下

@MyTest1(aaa="牛魔王",ccc={
   "HTML","Java"})
public class AnnotationTest1{
   
    @MyTest1(aaa="铁扇公主",bbb=false, ccc={
   "Python","前端","Java"})
    public void test1(){
   
        
    }
}

注意:注解的属性名如果是value的话,并且只有value没有默认值,使用注解时value名称可以省略。比如现在重新定义一个MyTest2注解

public @interface MyTest2{
   
    String value(); //特殊属性
    int age() default 10;
}

定义好MyTest2注解后,再将@MyTest2标记在类上,此时value属性名可以省略,代码如下

@MyTest2("孙悟空") //等价于 @MyTest2(value="孙悟空")
@MyTest1(aaa="牛魔王",ccc={
   "HTML","Java"})
public 

你可能感兴趣的:(java,java,开发语言)