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中的注解和自定义注解的主要内容,如果未能解决你的问题,请参考以下文章