当前位置: 首页 > news >正文

JAVA注解(简单版)

1.什么是注解?

Java注解(Annotation),也叫元数据。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

注解只是用来标记,而这个注解真正的功能都是由框架通过反射来实现的。

2.注解的属性

注解的属性也叫做成员变量。注解只有成员变量,没有方法。注解的成员变量在注解的定义中以“无形参的方法”形式来声明,其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface TestAnnotation { int id(); String msg(); }

在使用的时候,我们应该对成员变量进行赋值。赋值的方式是在注解的括号内以 value=“” 形式,多个属性之前用 ,隔开。

@TestAnnotation(id=3,msg="hello annotation") public class Test { }

注解中属性可以有默认值,默认值需要用 default 关键值指定。

3.元注解

描述注解的注解是元注解,这些注解只能用在修饰注解上,不能使用在其他地方,比如方法、类等等。

3.1@Retention

RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;也就是编译时有效。
RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;加载时被抛弃。
RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;一直有效!

3.2@Target

@Target(ElementType.TYPE) —— 接口、类、枚举、注解
@Target(ElementType.FIELD) —— 字段、枚举的常量
@Target(ElementType.METHOD) —— 方法
@Target(ElementType.PARAMETER) —— 方法参数
@Target(ElementType.CONSTRUCTOR) —— 构造函数
@Target(ElementType.LOCAL_VARIABLE) —— 局部变量
@Target(ElementType.ANNOTATION_TYPE) —— 注解
@Target(ElementType.PACKAGE) —— 包

比如@Target({ElementType.TYPE, ElementType.METHOD}),就代表着@RequestMapping可以用在 接口、类、枚举、注解上、还可以用在方法上。

4.自定义注解

public class Test { @myAnnotation public void test(){ }; } @Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface myAnnotation{ //暂时没有参数 }
http://www.gsyq.cn/news/1611711.html

相关文章:

  • 基于FFmpeg的直播视频录制工具StreamCap
  • 【毕业设计】基于 SpringBoot 的高校学生心理预警干预系统的设计与实现 基于 SpringBoot 的大学生心理状态跟踪管理系统(源码+文档+远程调试,全bao定制等)
  • Spring Cloud分布式事务快速上手(基于Seata AT模式,集成Nacos)--学习版
  • CAD 图纸批量处理:用 OpenClaw 实现图纸格式转换、批量打印、版本号自动标注
  • CPT Markets:把多语言支持做扎实,注重效率的使用者更容易感受到的框架
  • Manim 节奏控制指南 (Rate Functions)
  • 按照这个方法真的领到了8元,千问新用户专属220372
  • 数值优化方法:信任域与无导数技术详解
  • AI 建议用 Redis `SETNX` 防重复提交,为什么锁过期后仍可能创建两条记录
  • 6G网络中大模型技术与多模态感知通信的融合应用
  • FreeRTOS学习笔记(二)
  • 四川大学《微积分I-1》期末试卷及答案2016-2025学年PDF
  • 【车载 AOSP 16 蓝牙(bluedroid)服务】【qcom 平台双蓝牙】【13.耳机如何协商采样率:从 AVDTP 到 AAC 44100 的一条路】
  • YOLO目标检测论文实战指南:从模型改进到实验写作全流程
  • BetterJoy完整指南:让Switch手柄在PC游戏上完美运行
  • 告别泰拉瑞亚原版限制:tModLoader模组开发实战手册
  • Opencv延迟优化
  • 项目包含项目源码、项目文档、数据库脚本、软件工具等资料;
  • 欧姆龙NJ系列EtherCAT总线通信常用系统状态字
  • 【GitHub】 fastText:当“快“成为核心竞争力——从源码拆解 Facebook 的 10 亿词级 NLP 利器
  • 新版通达信多空主力拉升1主图2副1选股指标套装工具
  • 从厨房秤到智能称重:用STM32F103和HX711打造你的第一个物联网传感器节点
  • 别把RAG当架构:Ontology(本体)才是Agent的业务世界
  • 数组名的隐式转换规则
  • FPGA加速数字孪生:GRU算法与硬件优化实践
  • 2026 照片恢复教程|5 种零基础恢复技巧汇总,最后一个90%人不知道!
  • MFile:不止是Minio的“管理中介”
  • Keil MDK vs ARM-GCC(arm-none-eabi-gcc)完整区别
  • 关于ISACA第五届数字信任大会两大权威文件
  • 2026年AI写长篇小说工具终极测评:5款热门工具横评,长篇选手到底选哪个