java中的注解和自定义注解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的注解和自定义注解相关的知识,希望对你有一定的参考价值。

注解

注解概述

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

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

常用注解jdk自带

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

Spring Boot常用注解

  • @Data
  • @RequestMapping
  • @Controller
  • @SpringBootApplication

元注解

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

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

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

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

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

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












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

自定义注解基本格式

@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);

以上是关于java中的注解和自定义注解的主要内容,如果未能解决你的问题,请参考以下文章

[Java]利用拦截器和自定义注解做登录以及权限验证

从零开始学springboot-6.手写拦截器和自定义注解

注解和自定义注解

Android进阶之注解解析和自定义注解

CollectionViewCell、MapView 和自定义注解

反射和自定义注解实战案例