快速了解-注解Annotation

news/2024/7/8 4:49:40 标签: python, 数据库, 前端

描述

  • Annotation定义:注解是Java语言从JDK 5.0版本开始引入的一种技术。

  • Annotation作用

    • 注解不是程序本身,但可以对程序作出解释。这与注释(comment)类似,但注解可以被其他程序(如编译器)读取。

  • Annotation格式:注解在代码中以"@注释名"的形式存在,可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")

  • Annotation使用位置:注解可以附加在包(package)、类(class)、方法(method)、字段(field)等上面,相当于给它们添加了额外的辅助信息。

  • Annotation访问方式:可以通过Java的反射机制编程实现对这些元数据的访问。

内置注解
  • 一些常常看见的

注解名称定义位置用途描述参数示例
@Overridejava.lang.Override适用于修饰方法,表示该方法声明打算重写超类中的另一个方法声明无需参数
@Deprecatedjava.lang.Deprecated用于修饰方法、属性、类,表示不鼓励程序员使用,通常因为存在危险或更好的选择无需参数
@SuppressWarningsjava.lang.SuppressWarnings用来抑制编译时的警告信息,需要添加参数使用@SuppressWarnings("all") @SuppressWarnings("unchecked") @SuppressWarnings(value={"unchecked", "deprecation"})

自定义注解

实例
//这个两个是元注解
​
@Target(ElementType.METHOD)
/*这个是 方法注解 (简单说这个注解用在方法上)*/
@Retention(RetentionPolicy.RUNTIME)
/*注解在源代码、类文件以及运行时都保留。。
*表示我们的注解在什么时候还可以生效
*(RetentionPolicy.RUNTIME > RetentionPolicy.CLASS > RetentionPolicy.SOURCE)
*/
public @interface test {
    String[] value() default {};
    Mode RequsetMode() default Mode.FORM;  
    Mode returnType() default Mode.FORM;  
    boolean isMyServlet() default false; 
}
  • 自定义注解的定义

    • 使用@interface关键字来声明自定义注解,它自动继承自java.lang.annotation.Annotation接口。

  • 注解的声明格式

    • 格式为:public @interface 注解名 {定义内容}

  • 注解方法

    • 注解中的每一个方法实际上是声明了一个配置参数。

    • 方法的名称代表参数的名称。

  • 参数类型

    • 返回值类型定义了参数的类型,只能是基本类型、ClassStringenum等。

  • 默认值

    • 可以使用default关键字来声明参数的默认值。

  • 参数成员

    • 如果注解只有一个参数成员,通常参数名为value

  • 注解元素的值

    • 注解元素在使用时必须有值,定义注解元素时,常用空字符串、0或其他默认值作为参数的默认值。

元注解
  • @Target

    • 作用:指定注解可以应用于哪些Java元素,如类、方法、构造函数、字段、参数、局部变量等。

    • 参数:

      @target(ElementType)

      枚举,可能的值包括:

      • ANNOTATION_TYPE:注解

      • CONSTRUCTOR:构造函数注解

      • FIELD:字段注解

      • LOCAL_VARIABLE:局部变量注解

      • METHOD:方法注解

      • PACKAGE:包注解

      • PARAMETER:参数注解

      • TYPE:类、接口(包括注解类型)

    • 定义位置:java.lang.annotation.Target

  • @Retention

    • 作用:定义注解的保留策略,即注解信息在何种阶段可用。

    • 参数:

      @Retention(RetentionPolicy)

      枚举,可能的值包括:

      • SOURCE:注解仅在源代码中保留,在编译时丢弃。

      • CLASS:注解在源代码和类文件中保留,但在运行时不可用。

      • RUNTIME:注解在源代码、类文件以及运行时都保留。

    • 定义位置:java.lang.annotation.Retention

  • @Documented

    • 作用:指示注解应该被包含在用户文档中。

    • 参数:无

    • 定义位置:java.lang.annotation.Documented

  • @Inherited

    • 作用:指示一个注解可以被子类继承。

    • 参数:无

    • 定义位置:java.lang.annotation.Inherited


http://www.niftyadmin.cn/n/5536500.html

相关文章

使用vue3-treeselect问题

1.当vue3-treeselect是单选时,使用watch监听绑定value,无法监听到值清空 对照后将:value改为v-model,如图 2.使用vue3-treeselect全部清空按钮如何置空select的值,使用watch监听 多选:pageInfo.officeName(val) {// …

#Vue 3 + ts + antd table表格的使用(嵌套 子表格版)

1. 嵌套子表格的使用 <template><a-table :columns"columns" :data-source"data" class"components-table-demo-nested"><template #bodyCell"{ column }"><template v-if"column.key operation">…

WCCI 2024第三弹:忍者表演惊艳全场,盛大晚宴不容错过

WCCI 2024第三弹&#xff1a;忍者表演惊艳全场&#xff0c;盛大晚宴不容错过&#xff01; 会议之眼 快讯 会议介绍 IEEE WCCI&#xff08;World Congress on Computational Intelligence&#xff09;2024&#xff0c;即2024年IEEE世界计算智能大会&#xff0c;于6月30日至7月…

LabVIEW航空用电缆检测

系统通过集成LabVIEW平台&#xff0c;实现了航空用电缆检测过程中的自动数据收集、处理和报告生成&#xff0c;显著提升了检测效率和数据准确性&#xff0c;降低了人工干预&#xff0c;提高了电缆检测的可靠性。 项目背景 在航空领域&#xff0c;电缆的质量检测对确保飞机及其…

地铁车厢火灾3D模拟逃生演习减少了资源损耗和风险

在消防安全领域&#xff0c;为了更好地提升安全实训效果&#xff0c;我们在VR安全培训领域打造了多款消防安全VR模拟实训系统&#xff0c;不仅实现了与现实世界无异的交互操作&#xff0c;更在虚拟空间中超越了现实的限制&#xff0c;模拟出那些现实中难以搭建的复杂场景。 利用…

【Unity navmeshaggent 组件】

【Unity navmeshaggent 组件】 组件概述&#xff1a; NavMeshAgent是Unity AI系统中的一个组件&#xff0c;它允许游戏对象&#xff08;通常是一个角色或AI&#xff09;在导航网格&#xff08;NavMesh&#xff09;上自动寻路。 组件属性&#xff1a; Radius&#xff1a;导航…

比尔・盖茨谈AI市场狂热现象;腾讯推出TransAgents文学翻译框架

&#x1f989; AI新闻 &#x1f680; 比尔・盖茨谈AI市场狂热现象 摘要&#xff1a;微软联合创始人比尔・盖茨在《下一个伟大的构想》播客节目中表示&#xff0c;目前AI市场的狂热程度远超互联网泡沫&#xff0c;准入门槛低&#xff0c;融资额巨大&#xff0c;处于前所未见的…

Web与App测试:深入解析两者的关键差异

1. 架构不同 Web测试&#xff1a;基于B/S&#xff08;Browser/Server&#xff0c;浏览器/服务器&#xff09;架构&#xff0c;用户通过浏览器访问服务器上的资源&#xff0c;无需在本地安装额外的客户端软件。App测试&#xff1a;基于C/S&#xff08;Client/Server&#xff0c…