首页 > 编程语言 >java中的注解、自定义注解

java中的注解、自定义注解

时间:2023-03-13 21:46:16浏览次数:44  
标签:java 自定义 class RetentionPolicy 注解 ElementType public

注解

注解概述

​ 注解类似于一个商品标签,给当前程序的开发者提供信息和标记,给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);
   }
}

标签:java,自定义,class,RetentionPolicy,注解,ElementType,public
From: https://www.cnblogs.com/julys08/p/17212996.html

相关文章

  • Git 仓库7K stars!学Java开源项目austin要多久?
    我是3y,一年CRUD经验用十年的markdown程序员......
  • Java数组
    Java数组1.数组概述数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元......
  • Java简介
    Java是什么?Java是由Sunmicrosystem公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。Java分为三个体系:JavaSE(J2SE)(Java2platformstandardedition,J......
  • Java基础语法
    Java基础语法Java程序是一系列对象的集合,而这些对象通过调用彼此来实现协同工作。对象:对象是类的一个实例,有状态和行为。例如:一条狗是一个对象,它的状态有:颜色、名字、品......
  • Java三大集合类 - List
    ListSetMap一、List几个小问题:1、接口可以被继承吗?(可以)2、接口可以被多个类实现吗?(可以)3、以下两种写法有什么区别?//Listlist1=newList();是错误的因为List()是......
  • 自定义转换
    显示转换:staticexplicitoperator隐式转换:staticimplicitoperatorinternalclassProgram{staticvoidMain(string[]args){//......
  • qt自定义槽函数
    自定义一个类:如果你想在QLabel中使用自定义的槽函数,可以按照以下步骤进行操作:创建一个类,例如MyLabel,继承自QLabel。在MyLabel类中声明一个槽函数,例如mySlo......
  • Java(单元测试,反射)
    单元测试、反射一、单元测试1.1单元测试快速入门所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试。我们想想,咱们之前是怎么进行测试的呢?比如说我......
  • Lombok注解
    一、简介:Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率二、Lombok使用:使用Lombok需要的开发环境Java+Maven+IntelliJIDEA或者Eclipse(安装Lo......
  • java基础-总结案例
    利用java基础,实现如图所示的功能案例涉及要点:#程序基本概念变量数据类型#流程控制顺序选择循环......