首页 > 编程语言 >Java中注解的学习

Java中注解的学习

时间:2024-10-14 18:22:08浏览次数:1  
标签:Java 学习 RetentionPolicy Inherited Test 注解 ElementType Retention

元注解


目录

什么是元注解

元注解是用于定义注解的注解(或者说元注解是一种基本注解,它能够应用到其它的注解上面);元注解也是一张标签,但是它是一张特殊的标签,它的作用和目的就是给其他普通的标签进行解释说明

5 种元注解

@Retention

  • RetentionPolicy.SOURCE(存活期最短):注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视
  • RetentionPolicy.CLASS :注解只被保留到编译进行的时候,它并不会被加载到 JVM 中
  • RetentionPolicy.RUNTIME(存活期最长) :注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
}

@Retention 的英文意为保留期的意思,当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间

@Documented

@Document 顾名思义,这个元注解肯定是和文档有关。它的作用是能够将注解中的元素包含到 Javadoc 中去。

@Target

@Target 用于指定注解运用的地方(当一个注解被 @Target 注解时,这个注解就被限定了运用的场景,如类、方法、方法参数、属性等)

@Target 有如下取值:

  • ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
  • ElementType.CONSTRUCTOR 可以给构造方法进行注解
  • ElementType.FIELD 可以给属性进行注解
  • ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
  • ElementType.METHOD 可以给方法进行注解
  • ElementType.PACKAGE 可以给一个包进行注解
  • ElementType.PARAMETER 可以给一个方法内的参数进行注解
  • ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

@Inherited

@Inherited 注解指的是使用该注解的类的子类,可以继承该类的注解

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface Test { }

@Test
public class A {}
public class B extends A { }

  • 注解 Test 被 @Inherited 修饰,之后类 A 被 Test 注解,类 B 继承 A,类 B 也拥有 Test 这个注解

@Repeatable

@Repeatable 注解指的是重复,是 Java 1.8 才加进来的新特性(通常用于注解的值可以同时取多个)

@interface Persons {
    Person[]  value();
}

@Repeatable(Persons.class)
@interface Person{
    String role default "";
}

@Person(role="artist")
@Person(role="coder")
@Person(role="PM")
public class SuperMan{
}

  • Persons 给一个 SuperMan 贴上,相当于同时给他贴了程序员、产品经理、画家的标签

标签:Java,学习,RetentionPolicy,Inherited,Test,注解,ElementType,Retention
From: https://www.cnblogs.com/BingBing-8888/p/18464742

相关文章

  • 【数据结构】学习笔记之栈和队列
    目录一、栈基本概念二、顺序栈2.1置空栈2.2判栈空2.3判栈满2.4进栈2.5退栈2.6取栈顶元素三、链栈3.1建栈3.2判栈空3.3进栈3.4退栈3.5取栈顶元素四、队列基本概念五、顺序队列5.1置队空5.2判队空5.3判队满5.4入队5.5出队5.6取队头元素......
  • 基于HTML+CSS+JavaScript 家具/家居商城类网站
    一、......
  • 基于Java使用SpringBoot+Vue框架实现的前后端分离的美食分享平台
    ✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • Java面试题(持续更新中...)
    事务的四大特性原子性,隔离性,持久性,一致性事务的隔离级别和现象读未提交:可能产生脏读,读取到未提交的数据读已提交:可能产生不可重复读取问题,A事务中读取到B事务已提交的数据,导致两次读取数据不一致可重复读:可能产生幻读问题,A事务中查询到B事务插入的数据,导致两次查询条数不一......
  • 知识迁移和联邦学习区别
    目录知识迁移和联邦学习区别一、定义二、应用场景三、运作机制四、总结知识迁移和联邦学习区别知识迁移和联邦学习是两个不同领域的概念,它们在定义、应用场景和运作机制上都存在显著的差异。以下是对这两个概念的详细比较:一、定义知识迁移:定义:知识迁移是一种......
  • 了解 java web并写一个简单的登录功能
    首先我们要知道什么是servlet,它允许开发者创建动态Web内容。Servlet是Java编写的服务器端程序,它扩展了Java的功能,使得它可以在客户端请求时产生动态内容,并且可以与数据库交互。在Java中实现servlet有三种方式:继承HttpServlet抽象类,实现Servlet接口,继承GenericServlet抽......
  • OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。原文链接:T-RexLabel!超震撼AI自动标注工具,开箱即用、检测一切“赛博螺丝工”解放双手的时刻来了!重复手动拉框一直以来都是数据标注中最令人头疼的部分。人工标注不准确且低效,会严重影响数据集的质量......
  • 参赛故事|学习金蝶云苍穹开发,我从大一就开始
    怀揣热爱,勇敢挑战:我的金蝶软件杯参赛之旅2024年5月,我正值大一,怀揣着对编程的热爱,然而心中却充满了疑惑。尽管在课堂上学到了很多理论知识,但面对实践时,总觉得自己缺乏真正的技术能力,心中有种空洞的感觉。每当看到其他同学展示自己完成的项目时,我不禁感到羡慕和渴望,想要通过实践来......
  • javaweb实现下载功能报错sockettimeout
    javaweb压缩zip包下载,并响应头里面指定文件大小在JavaWeb应用程序中,如果你想要创建一个ZIP文件并通过HTTP响应提供下载,并且希望在响应头中指定文件大小,你可以先将文件写入到一个临时的ByteArrayOutputStream中,这样你就可以计算出压缩后的文件大小。然后,你可以将这个字节......
  • 【最新原创毕设】基于SpringCloud的一站式热点推荐平台+23649(免费领源码)可做计算机毕
    目 录摘要1绪论1.1选题背景与意义1.2开发现状1.3论文结构与章节安排2 开发环境及相关技术介绍2.1MySQL数据库2.2 Tomcat服务器2.3 Java语言2.4 SpringCloud框架介绍3 一站式热点推荐平台系统分析3.1可行性分析3.1.1技术可行性分析3.1......