Java编程基础——注解Annotation(一)

Java基础:Annotation注解 文章目录1. 注解的分类2. 元注解3. 注解元素4. 内置注解5. 注解的提取6. 自定义注解 注解在一定程度上是在把元数据与源代码文件结合在一起,而不是保存在外部文档中这一大的趋势下所催生的。注解可以提供用来完整的描述程序所需的信息,而这些信息是无法用Java来表达的。 因此,注解存储有关程序的额外信息,是可以由编译器来测试和验证的。注解还可以用来生成描述符文件,甚至是新的类定义,并且有助于减... 阅读详情

一、深入理解注解Annotation

要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。


二、Java SE5内置的三种注解

@override:表示当前定义的方法将覆盖超类中的方法,如果方法名写错,编译器就会报错。

@Deprecated :如果程序员使用了该注解,那么编译器会发出警告信息。

@SuppressWarnings:关闭不当的编译器警告信息,在Java SE5之前可以使用该注解,但是不起作用。

三、Java提供的元注解

元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其

它 annotation类型作说明。Java5.0定义的元注解:
    1.@Target,
    2.@Retention,
    3.@Documented,
    4.@Inherited

这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和相应分参数的使用说明。


  @Target:表示该注解可用于什么地方。可能的ElementType参数如下:

1.CONSTRUCTOR:构造器的声明
    2.FIELD:域声明(包括enum实例)
    3.LOCAL_VARIABLE:局部变量声明
    4.METHOD:方法声明
    5.PACKAGE:包声明
    6.PARAMETER:参数声明
    7.TYPE:类、接口(包括注解类型) 或enum声明

@Retention:需要在什么级别保存该注解信息:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。使用这个meta-Annotation可以对 Annotation的“生命周期”限制。

  作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)

  取值(RetentionPoicy)有:

    1.SOURCE:在源文件中有效(即源文件保留)(注解将被编译器丢弃)
    2.CLASS:在class文件中有效(即class保留)(注解在class文件中可用,但会被jvm丢弃)
    3.RUNTIME:在运行时有效(即运行时保留)(jvm在运行期保留注解,因此可以通过反射机制读取信息)

  Retention meta-annotation类型有唯一的value作为成员,它的取值来自java.lang.annotation.RetentionPolicy的枚举类型值。

@Documented:将此注解包含在javadoc中。Documented是一个标记注解,没有成员。

@Inherited:允许子类继承父类中的注解。@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

  注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。

  当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。如果我们使用java.lang.reflect去查询一个@Inherited annotation类型的annotation时,反射代码检查将展开工作:检查class和其父类,直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。


四、自定义注解案例分析

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase {
	public int id();
	public String description() default "no description";
}

注意:id和description的定义和方法的定义类似,由于编译器会对id进行类型检查,将用例文档的追踪数据库与源代码相关联是可靠的。description 有一个default的默认值,如果在注解时没有给出description的值,那么注解的处理器就会使用此元素的默认该值 no description。

package org.wangkeqing.annotation;

import java.util.List;

public class PasswordUtils {
	
	@UseCase(id=47,description="Passwords must contain at least one numeric")
	public boolean validatePassword(String password){
		return (password.matches("\\w*\\d\\w*"));
	}
	
	@UseCase(id=48)
	public String encriptPassword(String password){
		return new StringBuilder(password).reverse().toString();
	}
	
	@UseCase(id=49,description="New Password can't equal previously used ones")
	public boolean checkForNewPassword(List<String> prevPasswords,String password){
		return !prevPasswords.contains(password);
	}

}

如上,在encryptPassword方法中,没有出现description的值,此时注解处理器description的值就是默认值。


Java编程-注解 注解Annotation 示例: 四个元注解 阅读详情

相关推荐

Java基础:注解Annotation

注解是一种元数据形式,可以附加在代码中的类、方法、字段等元素上。它为编译器和运行时环境提供了额外的信息,用于指导代码的编译、运行或生成特定的行为。与传统的注释不同,注解可以被编译器和运行时工具识别和处理。例如,@Override注解用于标识一个方法是重写父类中的方法。当编译器看到这个注解时,它会进行额外的检查,确保该方法确实是重写了父类的方法。使用@interface关键字来定义一个注解。Retention;

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 1265

Java语法基础四:注解(Annotation)

注解的定义、作用、使用流程以及常用元注解和内置注解

Xyuan的博客 846

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...

简简单单Onlinezuozuo 1万+

【Java学习笔记-基础篇】关于注解(annotation)编程

今天在看以前写的代码,发现自己对注解的了解还不是非常透彻,经常选择性就忽视了对注解实现的探究,遂查询资料学习了一下。

weixin_43742184的博客 249

linux 内核vxlan收发包流程

1.vxlan口收包处理流程 前面几章详细介绍了vxlan接口的使用,而且已经知道vxlan是 MAC IN UDP中的封装,因此,在解封装之前,一切按照原有流程走,在此复习一下内核收发包流程(驱动层的数据处理这次不再解析,直接从__netif_receive_skb_core开始) #物理网卡处理中断,触发softirq i40e_intr └─napi_schedule_irqoff #i40e softirq把包放到per cpu backlog,触发softirq i40e_napi_p

魏言华的博客 3826

RT-Thread Studio与CubeMX联合编程(超级详细)

RT-Thread Studio与CubeMX联合编程 本文章参考以下文章: https://blog.youkuaiyun.com/qq_40824852/article/details/122596043 https://zhuanlan.zhihu.com/p/395106066 https://blog.youkuaiyun.com/m0_37697335/article/details/108890584 一、简介 经过上次对RT-Thread Studio的初步尝试,发现RT-Thread Studio中存在官方支

zhuzhu的博客 3万+

面向方面编程的Annotation简介(转)

面向方面编程的Annotation简介(转)[@more@]     Annotation概述        首先让我们给出这两项技术的一个概述。Annotation是JDK5.0的新功能,它在JSR-175规范中有详细定...

congjukun0600的博客 196

PID不够用?试试用ADRC改造你的ArduCopter:从Simulink仿真到SITL测试全记录

本文详细介绍了如何将ADRC(自抗扰控制)算法集成到ArduPilot飞控中,以替代传统PID控制器。通过Simulink建模、参数整定和SITL仿真测试,展示了ADRC在抗扰动能力、响应速度和参数调节复杂度上的优势,特别适合无人机在强风扰动下的稳定控制。

weixin_32349093的博客 274

Annotation:代码开发模式简介

代码开发模式简介Annotation可以说是整个JDK发展的一项重要技术,因为从现在的开发来讲,Annotation的使用已经变得广谱化,只要有项目基本上都会有Annottation出现。如果要想理解Annotation的作用,那么首先必须通过历史来进行一些简单的回顾,对于软件项目的开发往往会经历一下三个过程:1.在进行软件项目的开发过程之中,会将所有使用到的第三方的信息或者程序有关的操作都写在程...

编程语言基础知识 523

噪声整形与过采样实战:从N-bit ADC到DSM的SQNR优化指南

本文深入探讨了噪声整形与过采样技术在DSM(Delta-Sigma调制器)中的应用,重点分析了量化器位数(N)、滤波器阶数(L)和过采样率(OSR)对SQNR优化的影响。通过实战案例和参数协同优化策略,帮助工程师在音频处理和通信系统设计中实现更优的信号质量。

weixin_42561040的博客 340

最新测算源码PHP算命源码-风水八字-八字起名-塔罗牌占卜

未来,随着技术的发展和用户需求的变化,我们可以继续对系统进行升级和优化,以满足更多用户的需求和期望。数据库设计:创建一个名为bazi的数据库表,包含以下字段:id(自增ID)、name(姓名)、sex(性别)、birth_date(出生日期)、birth_time(出生时间)、bazi(八字结果)。数据库设计:创建一个包含塔罗牌信息的数据库表,如tarot_cards,包含字段:id(塔罗牌ID)、name(塔罗牌名称)、meaning(塔罗牌含义)等。根据操作系统的不同,PHP的安装方法会有所不同。

shanbeizi的博客 2420

Annotation(一)——注解开发介绍

在编程中,一直强调的一点就是注释的编写,注释的规范等等。尤其是越是核心,程序越复杂,逻辑越多的清空下,注释的编写对我们以后的阅读代码,维护软件起着至关重要的作用。一款软件有着好的注释,相当于一个中国人阅读一篇带着汉语翻译的英文文章,其阅读速度是事半功倍的效果。但是今天想要总结的却不是代码中的注释需要注意的问题,而是JDK5.0以后提供的一种新特性。           一, Annotatio

学会改变自己——才能突破 9661

航天设备研制中的形态分类:电性件、正样件及其他关键形态详解

航天设备的研制是一个高度复杂且严谨的工程过程,涉及多个阶段的不同产品形态。这些形态各具特点,在研制流程中承担着不同的验证任务和工程目标。本文将系统介绍航天设备研制中的主要形态,包括**电性件(EM)**、**正样件(FM)**以及**结构热控件(STM)**、**鉴定件(QM)**和**初样件(PFM)**等,详细解析它们的定义、用途和工程意义,帮助读者全面理解航天产品从设计到飞行的全生命周期管理。

ScilogyHunter的博客 1661

Annotation注解,定义,访问

【代码】Annotation注解,定义,访问。

weixin_44438307的博客 163

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力 (论文笔记+引入代码)。LSKNet能够动态调整其大的空间接收场,以更好地模拟遥感场景中各种对象的范围上下文。据我们所知,这是首次在遥感目标检测领域探索大型和选择性核机制。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 2864

SAM3 几行代码支持任意图像分辨率,减少显存占用(针对transformers库)

几行代码让sam3支持任意图像分辨率

qq_41234663的博客 156

java annotation详解_Java注解Annotation详解

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

weixin_42525343的博客 5857

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Annotation注解

注解Annotation 通过使用Annotation,可以在不改变原有逻辑的情况下,嵌入一些补充的信息。 Annotation只有成员变量,没有方法,成员变量以无参的方法来定义,方法名为成员变量名,方法的返回值为成员变量的类型。java.lang.annotation.Annotation接口:这个接口是所有Annotation类型的父接口。 根据是否包含成员变量可将 分为两类: 标记Anno...

littleAusna的博客 2439

jre9下载 jdk9

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java 注解(Annotation)--基础篇

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

会者定离,一期一祈 1685

python 注解annotation_Annotation注解(一)- 基础

这篇博客,主要讲解关于注解的一些基本知识,包括注解的概念、分类、作用,常见注解的定义及其解析方式等。Annotation的概念1. 概念关于Annotation注解的概念,我们可以看下官方的解释:Annotations, a form of metadata;provide data about a program that is not part of the program itself.An...

weixin_39608526的博客 1657

Java 基础 —— 注解 Annotation

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

MichaelHH 735

Java 中的注解(Annotation)

Java 中注解的相关知识的详细讲解

???? 1801

Java基础——注解(Annotation)基础

Java注解(Annotation)又称Java标注,是 JDK5.0 引入的一种注释机制。注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。注解对它们注解的代码的操作没有直接影响。元数据:描述数据的数据。

liang-jy的博客 884

java注解(Annotation)编程

Java注解是代码中的特殊标记,用于给代码添加一些信息,这些信息不会改变代码的执行逻辑,但可以被编译器或其他工具用来生成代码、创建文档、做静态分析或进行其他处理。除了使用Java内置注解外,开发者还可以根据需要定义自己的注解。定义自定义注解时,需要使用@interface关键字,并指定注解的元素(如果有的话)。

lw的博客 1124

Java注解(Annotation)

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

joshua317的博客 1059

Java:annotation注解的简单理解和总结

Java annotation注解Annotation1、Annotation的概述1.1、定义1.2、Annotation作用分类1.3、Annotation 架构2、Annotation的语法形式3、Annotation的分类3.1、基本注解3.2、元注解3.2.1、@Target3.2.2、@Retention3.2.3、@Documented3.2.4、@Inherited:4、自定义annotation4 .1、定义说明4.2、实例参考 注解Annotation 秒懂,Java 注解 (Annot

JMW1407的博客 2999
上一篇: Java反射机制
下一篇: Java编程基础——编写注解处理器(二)
spring_model
博客等级 码龄11年 36粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值