【Java】注解Annotation

Java的自定义注解——Annotation的使用 Annotation——自定义注解 Java中提供了 Annotation 功能,该功能可用于类,构造方法,成员变量,方法。参数等的声明中。该功能不会影响程序的运行,但是会对编译器警告等辅助工具产生影响。 定义 Annotation 类型 在定义 Annotation 类型时,需要用到用来定义接口的 interface 关键字,但需要在 interface 关键字前面加一个 “ @ ” 符号,即定... 阅读详情

注解 Annotation

理解Annotation

  • jdk 5.0 新增的功能
  • Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用 Annotation,程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。
  • 在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。

使用

示例一:生成文档相关的注解

@author 标明开发该类模块的作者,多个作者之间使用,分割

@version 标明该类模块的版本

@see 参考转向,也就是相关主题

@since 从哪个版本开始增加的

@param 对方法中某参数的说明,如果没有参数就不能写

@return 对方法返回值的说明,如果方法的返回值类型是void就不能写

@exception 对方法可能抛出的异常进行说明 ,如果方法没有用throws显式抛出的异常就不能写

其中

@param @return 和 @exception 这三个标记都是只用于方法的。

@param的格式要求:@param 形参名 形参类型 形参说明

@return 的格式要求:@return 返回值类型 返回值说明

@exception的格式要求:@exception 异常类型 异常说明

@param和@exception可以并列多个

示例二:在编译时进行格式检查(JDK内置的三个基本注解)

@Override: 限定重写父类方法, 该注解只能用于方法

@Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择

@SuppressWarnings: 抑制编译器警告

public class AnnotationTest{
public static void main(String[] args) {
@SuppressWarnings("unused")
int a = 10;
}
@Deprecated
public void print(){
System.out.println("过时的方法");
}
@Override
public String toString() {
return "重写的toString方法()"; } }

示例三:跟踪代码依赖性,实现替代配置文件功能

自定义注解

参照@SuppressWarnings定义

  1. 注解声明为:@interface、
  2. 内部定义成员,通常使用value表示
  3. 可以指定成员的默认值,使用default定义
  4. 如果自定义注解没有成员,表明是一个标识作用
public @interface MyAnnotation {

    String value() default "hello";//一个值就用String,多个值使用String[]
}

如果没有默认值,可以通过@MyAnnotation(value = "xxx")来赋值

如果注解有成员,在使用注解时,需要指明成员的值。 自定义注解必须配上注解的信息处理流程(使用反射)才有意义。自定义注解通过都会指明两个元注解:Retention、Target。

jdk 提供的4种元注解

元注解:对现有的注解进行解释说明的注解

Retention

指定所修饰的 Annotation 的生命周期:SOURCE\CLASS(默认行为)\RUNTIME只有声明为RUNTIME生命周期的注解,才能通过反射获取。

Target

用于指定被修饰的 Annotation 能用于修饰哪些程序元素

Documented

表示所修饰的注解在被javadoc解析时,保留下来

Inherited

被它修饰的 Annotation 将具有继承性。

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,TYPE_PARAMETER,TYPE_USE})
public @interface MyAnnotation {

    String value() default "hello";
}

通过反射获取注解信息

    public void testGetAnnotation(){
        Class clazz = Student.class;
        Annotation[] annotations = clazz.getAnnotations();
        for(int i = 0;i < annotations.length;i++){
            System.out.println(annotations[i]);
        }
    }

jdk 8 中注解的新特性

可重复注解

对于jdk8之前:

@MyAnnotations({@MyAnnotation(value="hi"),@MyAnnotation(value="hi")})
@MyAnnotation(value="hi")
@MyAnnotation(value="abc")//注解的成员变量为数组

jdk8之后:

  1. 在MyAnnotation上声明@Repeatable,成员值为MyAnnotations.class。
  2. MyAnnotation的Target和Retention等元注解与MyAnnotations相同。
@Inherited
@Repeatable(MyAnnotations.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,TYPE_PARAMETER,TYPE_USE})
public @interface MyAnnotation {

    String value() default "hello";
}

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
public @interface MyAnnotations {

    MyAnnotation[] value();
}

@Inherited在这个两个注解中要么都有,要么都没有,不然会报错。

类型注解

  1. ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中(如:泛型声明)。
  2. ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中。
Java注解annotation invalid type of annotation member 文章目录Java注解annotation : invalid type of annotation member1、什么是invalid type of annotation member2、哪些类型是合法的3、对应说明 Java注解annotation : invalid type of annotation member 1、什么是invalid type of annotation mem... 阅读详情

相关推荐

C# 进阶:打造WinForms中的动态交互式UserControl

本文深入探讨了如何在C# WinForms中创建动态交互式UserControl,以提升桌面应用的用户体验和代码复用性。通过剖析UserControl生命周期、事件体系,并结合一个可拖拽缩放的分割面板实战案例,详细讲解了鼠标键盘事件处理、自定义绘制、状态管理以及性能优化等核心技巧,帮助开发者封装复杂交互逻辑,打造专业级自定义控件。

weixin_29279153的博客 460

Java高级编程—注解

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

triumph_421的博客 1292

SAP公司间采购后台配置及前台操作详解

公司间采购后台配置及前台操作详解 SAP 实施中公司间交易几乎每个项目都会有此业务需求,比如内地很多公司都会在香港设置贸易型子公司。通过香港公司接单,然后转内地公司生产,或内地公司通过香港公司采购进口原材料,这些业务必然会涉及到公司间交易,下面我将详细说明下SAP是如何实现这种业务场景的,供大家参考。 配置前必须前台先创建公司间供应商主数据和客户主数据 1. 创建相应的客户主数据 功能说明 公司间...

weixin_40672823的博客 1万+

java基础知识(六)-01-注解(Annotation)

注解(Annotation) 概述 从JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是Annotation(注解),目前非常的流行,很多主流框架都支持注解,而且自己编写尽量的去用注解,代码更加简洁。 Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代码分析工具、开发工具和...

牛大圣 643

【MIT-BEVFusion代码解读】第四篇:融合特征fuser和解码特征decoder

的大小,实际上源代码也是这么做的。最后将得到两个分支的特征进行。,第一个特征使用卷积降低通道数即可,第二个则需要反卷积来提升。所以backbone只有两个分支,都是5个卷积模块组成。的长和宽都减半至90,然后在经过5个相同的。将通道降至128,后面再接5个相同的。,将通道数128上至256,并且将。特征进行融合,这里使用的。部分由两部分组成,分别是。,这个分支首先经过第一个。,然后再卷积得到 =>提取特征,最后得到特征。得到了两个大小不同的。

非晚非晚的博客 2951

别再只调电压了!深入理解数控电源的CC/CV模式与双闭环PID控制(以BUCK电路为例)

本文深入解析数控电源的CC/CV模式与双闭环PID控制技术,以BUCK电路为例,探讨如何通过双闭环控制优化负载突变响应和模式切换稳定性。文章详细介绍了电压环与电流环的协同工作原理、PID参数整定技巧及工程实践中的非线性补偿方法,帮助工程师提升电源设计的智能控制能力。

weixin_27017211的博客 261

教你如何为你的代码自动生成API文档(文档注释)!

帮助你在IDEA中自动生成文档注释,养成良好的代码注释习惯。

koveerKV的博客 1258

YOLOv8 改进:添加 LSK 注意力机制

通过添加 LSK 注意力机制,YOLOv8 能够更有效地捕捉特征图上的重要信息,提高检测性能,尤其是在复杂场景下展现出色的表现。这种方法不仅适用于资源受限的设备,还能在丰富多样的实际应用中提供强劲支持。

走向CTO的路上... 1220

idea java文档的注解说明与自动生成

idea 关于 java 类和方法的注释生成,关于 javadoc的注解idea关于java类上的文档注释生成idea关于java方法上的文档注释生成javadoc的相关注解写在类上面的JavaDoc写在方法上面的JavaDocidea生成javadoc文档java文档注解说明 idea关于java类上的文档注释生成 类注释文档是随着java文件创建而创建的。 截图来自以下csdn https:/...

qq_36723759的博客 3270

《QGIS快速入门与应用基础》161:面要素顶点编辑与形状调整

本文系统讲解了QGIS中面要素顶点编辑与形状调整的核心操作。首先明确了顶点编辑的适用场景与核心概念,强调需满足图层类型、编辑模式、要素选择等六大前提。详细介绍了编辑顶点工具(F2键)的激活路径及配套辅助工具,通过耕地地块修正案例,分步骤演示顶点移动、添加(双击/工具栏)、删除(Delete键)三大基础操作。同时提供捕捉工具开启、画布缩放等实用技巧,帮助用户高效完成面要素的精细化调整,解决实际工作中的形状偏差问题。全文图文结合,步骤清晰,适合GIS新手快速掌握面要素编辑的核心技能。

LuckyHanMo的博客 480

存储硬盘格式怎么把512还原为520格式??

硬盘厂商工具(如SeaChestsg_format)可以调整扇区大小。备份数据,因为调整扇区会清除硬盘内容。根据硬盘型号和接口类型,选择合适的工具进行调整。如果你需要更详细的帮助,请提供你的硬盘型号和存储设备类型。希望如上措施及解决方案能够帮到有需要的你。PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

**My Coding Family** 1142

使用注解生成文档

步骤如下: 1.java文件写法(去掉包名): /** * 注解Javadoc演示 * * @author Java * @version 1.0 * @since 1.5 */ public class Annotation { /** * 计算两数的和 * @param a * @param b * @return * */ pub...

zezea的博客 604

微信终于支持“多设备同时在线”?我用 NAS + Docker 搭了一个云端微信系统,多端共享24小时在线

通过Docker 容器,将微信运行在云端并通过浏览器访问,实现多设备共享同一微信会话 📱。本文详细介绍完整部署流程、docker-compose 配置及资源控制方案,让微信变成“可访问的云桌面应用” ✨

XiaoqiangClub的博客 865

java annotation详解_Java注解Annotation详解

从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、处理或者进行部署。Annotation提供了一种为程序元素(包、类、构造器、方法...

weixin_42525343的博客 5857

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java注解(Annotation)笔记

概述 Annotation 可以标注 Java 语言中的类、方法、变量、参数和包等。 和 Javadoc 不同的是:Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 内置的注解 Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation(元注解) 中。 @Override,@Deprecated ,@SuppressWarnings

ti_an_1989的专栏 264

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

annotation java 数组_java Annotation 注解的使用

源码地址:https://github.com/yylxy/JavaAnnotationTest.gitjava Annotation 注解的使用 ,代码中有详细的注释。是用AndroidStudio写的/*** 说明:注解创建类* 作者: 杨阳; 创建于: 2017-06-02 16:10*/@Retention(RetentionPolicy.RUNTIME)//定义注释的生命周期@Tar...

weixin_42524610的博客 404

Java注解(Annotation)机制

Java注解Annotation概念定义一个注解4种标准的元注解注解处理(解析) 概念 Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据(metadata)的途径和方法。Annatation(注解)是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation对象,然后通过该 Annotation 对象来获取注解中的元数据信息。 定义一个注解 impor...

Gary__123456的博客 572

Java注解(Annotation)

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。 一、内置的注解 Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.an

codedot 245

Java 基础 —— 注解 Annotation

简介 Annotation 是从 JDK 5.0 引入的。 注解使得我们可以以编译器验证的格式存储程序的额外信息。注解可以生成描述符文件,甚至是新的类定义,并且有助于减轻编写“样板”代码的负担。 比如,我们项目中常常使用的 lombok 包中的注解,@Data、@NoArgsConstructor、@AllArgsConstructor 等注解,大大简化了代码,省了很多操作。 基本注...

MichaelHH 734

Java的注解Annotation应用

记录:482 场景:Java的注解Annotation应用,包括但不限于注解作用在类上、注解作用在字段上、注解作用在构造函数上、注解作用在方法上、注解作用在方法形式参数上、注解作用在方法的返回参数上,一个注解作用在多个场景上。

zhangbeizhen18的博客 726

java 中的 Annotation 注解学习笔记

java 中的 Annotation 注解什么是注解元注解@Target@Retention@Document@Inherited自定义注解 什么是注解 Annotation 是从JDK5.0 开始引入的新技术 作用1: 可以被程序读取,列如@Value 通过反射使用该注解读取配置文件信息 作用2: 本身不是程序,和注释差不多. 如: @Override, @Deprecated 内置注解 Annotation 格式以 @注解命名成 在代码中存在,还可以添加一些参数,如: @RequestMapping(

qq_38217393的博客 437

Java注解(Annotation)

本文为joshua317原创文章,转载请注明:转载自joshua317博客Java注解(Annotation) - joshua317的博客 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Jav.

joshua317的博客 1058

Java Annotation 注解类

Java Annotation 注解类

qq_35899077的博客 690

Java 注解(Annotation)--基础篇

1.Annotation的定义 注解(Annotation),也叫元数据,是一种代码级别的说明。 它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 其实Annotation就是代码里的特殊标记,它们可以在编译,类加载,运行时被读取,并执行相应的处理,以便于其他工具补充信息或者进行部署。 2.Annotation作用分类 编写文档:通过注解生成API文档(@Documented)...

会者定离,一期一祈 1684

Java Annotation 注解

Annotation(注解)是什么? 附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。 1、Annotation的定义 首先看一下如何定义我们自己的注解,下面是SpringMvc中RequestParam注解的定义。 @R

老任物联网杂谈的专栏 960

Java——注解(Annotation)

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

Stewie Lee的博客 1万+
上一篇: 【Java】枚举类
下一篇: 【Java】集合
Sancean
博客等级 码龄6年 2472粉丝 149原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值