java中的注解、自定义注解

注解

注解概述

​ 注解类似于一个商品标签,给当前程序的开发者提供信息和标记,给java编译程序员或者jvm提供数据支持和标记,有着代码量少,易读性更高的好处,本质还是一个特殊的接口。广泛应用于spring boot中

注解分为三类:jdk注解、元注解、自定义注解

常用注解jdk自带

  • @override
  • @Test
  • @FunctionInterface
  • @SuppressWarnings(“deprecation”)

Spring Boot常用注解

  • @Data

  • @RequestMapping

  • @Controller

  • @SpringBootApplication

元注解

@Documented

表示当前的注解(或自定义注解)参与javadoc文档的生成

@Retention

表示当前注解(或自定义注解)的存在阶段有三个参数:

  • RetentionPolicy.SOURCE:编译阶段
  • RetentionPolicy.CLASS:字节码文件生成阶段【对应的注解会生成在class文件中,但不会参与运行】
  • RetentionPolicy.RUNTIME:运行阶段,参与编译阶段,生成于class文件中,参与运行阶段

RetentionPolicy.RUNTIME可以利用反射获取注解,并拿到注解里的数据内容

实际项目开发中,RetentionPolicy.RUNTIME注解会大量用于ssm,spring boot

@Target

通过枚举ElementType来限制当前注解的作用范围

ElementType 功能描述(限制范围)
ElementType.TYPE 用于类和接口、枚举
ElementType.FIELD 用于成员变量
ElementType.METHOD 用于成员方法
ElementType.PARAMETER 用于成员方法参数@NotNull
ElementType.CONSTRUCTOR 用于构造方法
ElementTypeANNOTATION_TYPE 用于注解
ElementType.LOCAL_VARIABLE 用于局部变量
ElementType.PACKAGE 用于包

自定义注解基本格式

@Documented//参与文档生成
@Retention(Retention.SOURCE);//参与编译阶段
@Target({ElementType.TYPE});//作用范围为类,接口,枚举
public @interface MyAnnotation{}

注解属性

概述

经典描述:以方法之名,行变量之实,实则为方法

自定义注解属性

  • 自定义枚举类,新增状态
public enum MyEnum{
   LOAD,START,END
}
  • 自定义一个注解

1.注解中任意属性没用使用default添加默认值,在使用过程中会报错,因为没有提供对应数据的能力

2.注解属性赋值时,没有明确赋值目标名称,对应的数据直接赋值给value

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation{
   /*
   注解的反馈数据为int类型
   */
   int age() defult 10;
   String value();
   
   /*
   反馈类型为自定义枚举类型MyEnum
   */
   MyEnum status();
}
  • 注解属性获取
@MyAnnotation(value = "七月",status = LOAD)
public class Demo{
   public static void main(Stirng[] args){
       Class<?> cls = new Demo.class;
       MyAnnotation an = cls.getAnnotation(MyAnnotation.class);
       System.out.println(an.value());
       System.out.println(an.age);
       System.out.println(an.status);
   }
}
posted @ 2023-03-13 21:36  ²º²º痕迹º  阅读(30)  评论(0编辑  收藏  举报