Java 注解使用

Java注解详解:从基础到高级应用 在Java中,注解通过@interface关键字定义。注解可以应用于类、方法、字段、参数等程序元素。自定义注解允许开发者定义自己的注解类型,以满足特定的需求。自定义注解通过@interface关键字定义,可以包含元素(成员变量)和默认值。Retention;Target; 阅读详情

一、注解简介

        注解是那些插入到源代码中使用其他工具可以对其进行处理的标签。这些工具可以在源码层次上进行操作,或者可以处理编译器在其中放置了注解的类文件。

        注解不会改变程序的编译方式。Java编译器对于包含注解和不包含注解的代码会生成相同的虚拟机指令。

        为了能够受益于注解,你需要选择一个处理工具,然后向你的处理工具可以理解的代码中插入注解,之后运用该处理工具处理代码。

Java中,注解是当作一个修饰符来使用的,它被置于被注解项之前,中间没有分号。每一个注解的名称前面都加上了@符号。

二、注解语法

1、注解的定义

注解是由注解接口来定义的:

modifiers @interface AnnotationName {
    elementDeclaration1
    elementDeclaration2
    ...
}

每个元素的声明都具有下面这种形式:

type elementName();

 或者

type elementName() default value;

比如我们常用,Spring中用来标记为Bean的注解定义:其中包含一个元素:value

public @interface Component {
    String value() default "";
}

        所有的注解接口都隐式的扩展自java.lang.annotation.Annotation接口,这个接口是一个常规接口,不是一个注解接口。你无法扩展注解接口,换句话说,所有的注解接口都直接扩展自java.lang.annotation.Annotation。

注解元素的类型为下列之一:

  • 基本类型(int、short、long、byte、char、double、boolean)
  • String
  • Class(具有一个可选的类型参数,例如Class<? extends MyClass>)
  • enum类型
  • 注解类型
  • 上述所述类型组成的数组

下面是个合法的元素声明的例子:

public @interface BugReport {
    enum Status { UNCONFIRMED, CONFIRMED, FIXED, NOTABUG };

    boolean showStopper() default false;
    String assignedTo() default "[none]";
    Class<?> testCase() default Void.class;
    Status status() default Status.UNCONFIRMED;
    Reference ref() default @Reference(); // an annotation type
    String[] reportedBy();
}

2、注解的使用

@BugReport(severity=10, assignedTo="Harry")

        其中元素的顺序无关紧要,如果某个元素的值未指定,那么就会使用声明的默认值。

        可以简化写法:如果没有指定元素,要么是因为注解中没有元素,或者使用默认值,这个时候就不用使用圆括号了()。例如:@BugReport。这样的注解又称为标记注解。

        另外一个快捷方式是单值注解。如果元素具有特殊名字value,并且没有指定其他元素,那么就可以忽略掉这个元素名以及等号。例如:@Component("beanName")。

值得注意的是:

  • 因为注解是由编译器计算而来的,因此,所有元素的值必须是编译器常量。
  • 一个注解元素永远不能设置为null,甚至不允许默认值为null,这样在实际应用中会相当不方便,必须使用其他默认值。

如果元素值是一个数组,需要将它的值用括号括起来:

@BugReport(. . . reportedBy={"Harry","Carl"})

如果数组元素是个单值,则可以忽略括号:

@BugReport(. . . reportedBy="Harry")

3、注解的各类声明

        注解可以出现在许多地方,这些地方可以分为两类:声明和类型用法声明注解可以出现在下列声明处:

  • 包
  • 类(包括enum)
  • 接口(包括注解接口)
  • 方法
  • 构造器
  • 实例域(包含enum常量)
  • 局部变量
  • 参数变量
  • 类型参数

对于类和接口,需将注解放在class和interface关键词前面。

对于变量,需将注解放置在类型的前面

泛化类或方法中的参数可以像下面这样被注解

public class Cache<@Immutable V> {.....}

包是在文件package-info.java中注解的,该文件只包含以注解先导的包语句。

/**
Package-level Javadoc
*/
@GPL(version="3")
package com.horstmann.corejava;
import org.gnu.GPL;

三、标准注解

        Java SE在java. lang、java.lang.annotation和javax.annotation包中定义了大量的注解接口。其中四个是元注解,用于描述注解接口的行为属性,其他的三个是规则接口,可以用它们来注解你的源代码中的项。下表列出了这些注解。

 1、用于编译的注解

@Deprecated注解可以被添加到任何不在被鼓励使用的项上,所以当使用一个过期的项时,编译器将会发出警告,这个注解与javadoc标签@deprecated具有同等功效。

@SuppressWarnings注解会告知编译器阻止特定类型的警告信息。

@Override这种注解只能用到方法上,编译器会检查这种注解的方法是否真正的覆盖了一个来自于超类的方法。

@Generated注解的目的是供代码生成工具来使用。

2、用于管理资源的注解

@PostConstruct和@PreDestroy注解用于控制对象生命周期的环境中,标记了这些注解的方法应该在对象被构建之后,或者在对象被移除之前,紧接着调用。

@Resource注解用于资源注入。

3、元注解

3.1、@Target元注解

        @Target元注解可以应用于一个注解,以限制该注解可以应用到哪些项上。下表显示了所有可能的取值情况,它们属于枚举类型ElementType,可以指定任意数量的元素类型,用括号括起来。

         一条没有@Target限制的注解可以应用于任何项上。

3.2、@Retention元注解

        @Retention元注解用于指定一条注解应该保留多长时间,默认值是RetentionPolicy.CLASS。其他类型如下表所示:

 3.3、@Documented元注解

        @Documented元注解为像Javadoc这样的归档工具提供了一些提示,以实现其归档。

注意:将一个注解应用到它自身身上是合法的,例如@Documented注解被自身注解为@Documented。

3.4、@Inherited元注解

        @Inherited元注解只能应用于对类的注解。如果一个类具有继承注解,那么它的所有子类都自动具有同样的注解。

Java之注解(Annotations)篇! 哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 阅读详情

相关推荐

【Audio】基于STM32 I2S移植WM8978 Audio Codec驱动

1. WM8978简介 WM8978是一款低功耗,高质量的立体声编解码器,专为便携式应用,如数码相机或数码摄像机等。 该芯片集成了立体声差分麦克风的前置放大器,并包括扬声器、耳机和差分或立体声线输出的驱动器。外部组件要求减少,因为不需要单独的麦克风或耳机放大器。 WM8978的功能框图如下所示: 2. WM8978硬件连接 使用STM32F429+WM8978硬件平台,通过I2S接口来读写音频数据,I2C接口发送写命令控制WM8978相关功能。 STM32F429与WM8978的引脚连接如下:

ZHONGCAI0901的博客 1万+

如何在Java中使用注解?

在Java中,注解(Annotation)是一种特殊的标记,可以用于在代码中添加元数据。注解提供了一种简单而强大的方式来向代码添加额外的信息,这些信息可以在编译时、运行时或者通过反射等方式被读取和处理。需要注意的是,注解本身并不会产生任何实际的代码逻辑,它只是提供了一种在代码中添加元数据的方式。在实际应用中,注解可以用于多种场景,如代码的文档生成、代码的静态分析、框架的配置等。通过使用注解,可以为代码添加更多的语义和信息,提高代码的可读性和可维护性,并提供更灵活的方式来进行代码的处理和配置。

weixin_44798281的博客 1091

5G NR切换测量事件解析:从A1到B2的实战应用指南

本文深入解析5G NR切换测量事件,从A1到B2的实战应用指南。详细介绍了系统内切换事件(A1-A6)和系统间切换事件(B1-B2)的触发条件与配置建议,帮助优化网络性能。通过实际案例分享,展示如何调整参数提升切换成功率和降低乒乓切换率,适用于5G网络优化工程师。

tcp8optimizer的博客 513

Java常用注解以及使用场景示例

针对Java项目中经常用到的注解进行了总结汇总,包含了注解的用法,原理,以及代码示例帮助希望了解注解的同学,对注解能够有更加深入的理解

yuxiangjin的博客 2573

Simulink Test Sequence自动化测试实战:从Excel到模型验证

本文详细介绍了如何利用Excel和MATLAB脚本实现Simulink Test Sequence的自动化测试。通过设计结构化Excel模板管理测试数据,并调用Simulink Test API批量创建与执行测试用例,该方法能显著提升复杂模型单元测试的效率,便于集成到CI/CD流程,实现从数据到验证的全自动化。

weixin_29261711的博客 144

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

Java——注解(Annotation)

注解是使用 @interface 关键字定义的,并且默认继承自Annotation接口。用于标识一个方法是重写父类的方法。该注解只能用于方法。@Override表示某个元素(类、方法、字段等)已经过时,不建议使用。仍然可以使用,但是不建议使用,通常是因为这个元素已经被替换为较新的功能。在使用这个类时,会显示:可以看到这个类被线划掉了,说明这个类已经过时。用于抑制编译器发出的警告。int i;

Stewie Lee的博客 1万+

第17篇:深入解析OpenEuler 24.03系统中的逻辑卷管理(LVM)

OpenEuler 24.03系统中的逻辑卷管理(LVM)提供了灵活的存储管理方案,通过在物理存储与文件系统间构建抽象层实现动态资源分配。

专注于系统运维、数据库、DevOps、虚拟化技术、docker、kubernetes、等云原生技术。 1689

java注解的使用及常用注解

java注解的使用及常用注解

qq_42003527的博客 2342

TPS65987D USB PD控制器:从原理到实战的完整设计指南

USB PD(Power Delivery)协议是USB Type-C接口实现高功率快充和数据传输的核心技术标准。其工作原理基于CC(Configuration Channel)引脚的双相标记编码(BMC)通信,通过协商电压和电流,实现高达100W的功率传输。这项技术的核心价值在于统一了充电标准,简化了设备间的互操作性,广泛应用于笔记本电脑、移动电源、扩展坞等设备。TPS65987D作为一款高度集成的USB PD控制器,将复杂的协议处理、电源路径管理和多重保护电路集成于单芯片,显著降低了设计复杂度。通过其可

weixin_30983965的博客 338

31.华为路由器:PPPOE配置模拟实验及NAT配置

实验环境 pppoe-client上面的接口信息 [AR1]dis ip interface brief *down: administratively down ^down: standby (l): loopback (s): spoofing The number of interface that is UP in Physical is 2 The number of interface that is DOWN in Physical is 1 The number of interface

迷逝 8117

java注解使用变量_java注解的使用

java中注解的使用1.说再前面使用注解开发的好处1.使代码更加干净易读,易于维护修改。比如,以前使用spring的开发,都是基于xml文件实现了统一的配置管理,但是缺点也是显而易见的,就是随着项目的越来越大,xml文件会变得越来越复杂,维护成本也会越来越高。使用注解就可以提供更大的便捷性,易于维护修改。2 可以实现代码的类型检查,特别是在编译器的角度实现一些类型检查,比如预检查(@Overrid...

weixin_36143191的博客 4589

风光储并网对电力系统稳定性影响的仿真研究

本文研究了风光储并网对电力系统稳定性的影响,基于MATLAB/Simulink平台搭建了IEEE 9节点测试系统的风光储并网模型。研究对比了光储、风储和风光储三种并网配置在多种干扰下的稳定性表现。结果表明:光储系统对频率变化最敏感,风储系统具有更强的功率波动适应能力,而风光储联合系统通过互补效应展现出最佳综合稳定性。储能系统在所有配置中均显著改善了频率恢复性能,验证了其在新能源并网中的关键支撑作用。研究为高比例可再生能源电力系统的稳定运行提供了仿真依据和技术参考。

huanghm88的专栏 154

Java注解的使用

从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注解)Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加 载, 运行时被读取, 并执行相应的处理。通过使用 Annotation, 程序员 可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证 或者进行部署Annotation 可以像修饰符一样被使用, 可用于修饰。...

小鲁蛋的博客 2146

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java 注解使用教程

Java 1.5引入了注解,现在它在Java EE框架(如HibernateJersey和Spring)中被大量使用。Java注释是该语言的一个强大特性,用于向Java代码中添加元数据。它们不直接影响程序逻辑,但可以由工具、库或框架处理,以执行特定的任务(例如代码生成、验证或自定义处理)。先定义三个注解Retention;Target;Retention;

tangPHP的博客 1174

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java注解怎么写_java注解

写在前面现在的java主流框架中,注解无处不在,因此我们完全有必要搞明白注解到底是什么。如何理解注解,它到底是怎么起作用的。注解的定义java是这样定义注解的:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。什么又是元数据的呢?说白了就是描述数据的数据,既然注解被称为元数据,具有描述作用,那么我们是不是可以把注解理...

weixin_42476912的博客 2245

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java 注解中使用变量_聊聊java中的注解

这篇文章开始讲解java中的注解,在平时的开发当中我相信你或多或少的接触过注解。比如你可能都见过@override,它代表的就是一个注解。但是,为了更加清晰的去介绍注解,我还是先给出一个例子,让你能够方便的理解。一、认识注解在平时不知道我们是否都用过便利贴,在一张纸上写好几句话,贴在我们需要的地方。就是下面这个;还有一个情况,大多数人都叫我们程序猿(钱多话少死得快),这也是给我们贴了一个...

weixin_39603778的博客 5669

java注解的使用_Java注解的使用

Java注解的使用参考廖雪峰java教程使用注解什么是注解(Annotation)?注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”:注解的作用从JVM的角度看,注解本身对代码逻辑没有任何影响,如何使用注解完全由工具决定。Java的注解可以分为三类:第一类是由编译器使用的注解,例如:@Override:让编译器检查该方法是否正确地实现了覆写;@SuppressWarnings:告诉...

weixin_34334554的博客 610

JAVA注解

本文将向你介绍J2SE5.0中的新特性之一:注解。本文将从什么是注解;J2SE5.0中预定义的注解;如何自定义注解;如何对注解进行注解以及如何在程序中读取注解5个方面进行讨论。     一、什么是注解     说起注解,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE

rj042的专栏 1万+

Java关于注解的使用、如何自定义注解、如何通过元注解解析注解

注解属性,其实本质上是抽象方法。但是我们按照属性来理解容易理解,因为到时候使用注解的时候,需要用=为其赋值。public @interface 注解名{XXXXXXX定义属性:增强注解的作用数据类型 属性名():此属性没有默认值,需要在使用注解的时候为其赋值。数据类型 属性名() default 值:此属性有默认值,如果有需要,还可以二次赋值。注解中能定义8种基本类型:String类型、class类型、枚举类型、注解类型、以及以上类型的一维数组。//品牌//车零件//价格//数量。

weixin_45797022的博客 1532

java获取注解的属性值_java注解使用、java获取注解的属性、获取注解的字段值

一、前言1、前面一直讲注解的基础知识,注解的定义,对于注解的使用几乎是一笔略过,本篇将着重讲讲注解的使用。 获取注解的属性,通过反射获取注解的属性值。二、示例代码1、定义一个注解,用于给 全局变量 field 字段 赋值package com.haha.study.annotation.value;import java.lang.annotation.Documented;import java...

weixin_39823200的博客 6241

java中注解的使用_java中注解的使用

使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节。注解就是用于修饰类、全局变量、方法、参数或局部变量的接口,java中规定,注解的使用不允许影响其修饰类的存在,也就是说如果将一个类的注解全部删除,这个类也能够编译通过。java中,注解的应用主要有四个方面:类注解,全局变量注解,方法注解,参数注解。其他的还有诸如包注解和局部变量注解这...

weixin_42519985的博客 506

Java 中注解的使用

Java中注解用法的详细介绍

qq_39701205的博客 1250

Java注解

注解通过@interface关键字进行定义注解本质就是接口,该接口默认继承Annotation接口接口中的属性就是接口的抽象方法属性的返回值类型基本数据类型字符串枚举注解Class类型以上类型的数组定义了属性,在使用时需要给属性赋值如果定义属性时,使用default关键字给属性默认初始值,则使用注解时,可以不进行属性的赋值如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值就可以。

qq_64851111的博客 1052

java 注解调用_java 注解使用

注解就相当于一个类,使用一个注解就相当于创建了注解类的一个实例对象java内置注解,如@Deprecated 意思是“废弃的,过时的”@Override 意思是“重写、覆盖”@SuppressWarnings 意思是“压缩警告”注解(Annotation)相当于一种标记,javac编译器、开发工具等根据反射来了解你的类、方法、属性等元素是有具有标记,根据标记去做相应的事情。标记可以加在包、类、属性...

weixin_34032649的博客 627
上一篇: Effective Java笔记(12)始终要覆盖 toString
下一篇: Java8 Optional类型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值