快速了解-注解Annotation

描述

  • 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.mzph.cn/web/39892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react apollo hooks

1、创建ApolloProvider来包装整个程序 <ApolloProvider client{client}><App /> <ApolloProvider> 2、useQuery查询 工作方式usequery将返回一个数组 const {要返回的对象} useQuery(传入参数) 实例 const query gqlquery name {whatever {field}} e…

信号量——Linux并发之魂

欢迎来到 破晓的历程的 博客 引言 今天&#xff0c;我们继续学习Linux线程本分&#xff0c;在Linux条件变量中&#xff0c;我们对条件变量的做了详细的说明&#xff0c;今天我们要利用条件变量来引出我们的另一个话题——信号量内容的学习。 1.复习条件变量 在上一期博客中&…

天润融通分析AI技术助力客户服务,实现满意度三倍增长

如今&#xff0c;客户体验越来越成为影响客户决策的核心要素。 对于企业来讲&#xff0c;客户在不同触点的每一次互动体验&#xff0c;都成为塑造品牌声誉的“Aha时刻”。但同时&#xff0c;随着社会的发展的加速&#xff0c;客户的需求也在日新月异&#xff0c;给企业带来挑战…

刷代码随想录有感(125):动态规划——最长公共子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>>dp(text1.size() 1, vector<int>(text2.size() 1, 0));for(int i 1; i < text1.size(); i){for(int j …

【SQL】已解决:SQL错误(15048): 数据兼容级别有效值为100、110或120

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决SQL错误(15048): 数据兼容级别有效值为100、110或120 在数据库开发和管理过程中&#xff0c;我们经常会遇到各种各样的错误。本文将详细分析SQL错误(15048)的背景、可能原因、…

langchain框架轻松实现本地RAG

一 什么是RAG? RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合了检索和生成模型的方法&#xff0c;主要用于解决序列到序列的任务&#xff0c;如问答、对话系统、文本摘要等。它的核心思想是通过从大量文档中检索相关信息&#xff0c;然后利用这些信息…

vue3-openlayers 图标闪烁、icon闪烁、marker闪烁

本篇介绍一下使用vue3-openlayers 图标闪烁、icon闪烁、marker闪烁 1 需求 图标闪烁、icon闪烁、marker闪烁 2 分析 图标闪烁、icon闪烁、marker闪烁使用ol-animation-fade组件 3 实现 <template><ol-map:loadTilesWhileAnimating"true":loadTilesWh…

读人工智能全传03分治策略

1. 黄金年代 1.1. 图灵在他发表的论文《计算机器与智能》中介绍了图灵测试&#xff0c;为人工智能学科迈出第一步做出了重大贡献 1.2. 美国在第二次世界大战后几十年里计算机技术发展的特色&#xff0c;也是美国在未来60年内确立人工智能领域国际领先地位的核心 1.3. 1955年…

lodash中flush的使用(debounce、throttle)

在项目的配置中&#xff0c;看到了一个请求&#xff0c;类似是这样的 import { throttle } from lodash-es// 请求函数 async function someFetch(){const {data} await xxx.post()return data }// 节流函数 async function throttleFn(someFetch,1000)// 执行拿到数据函数 a…

leetcode--二叉树中的最长交错路径

leetcode地址&#xff1a;二叉树中的最长交错路径 给你一棵以 root 为根的二叉树&#xff0c;二叉树中的交错路径定义如下&#xff1a; 选择二叉树中 任意 节点和一个方向&#xff08;左或者右&#xff09;。 如果前进方向为右&#xff0c;那么移动到当前节点的的右子节点&…

大数据开发中的数据生命周期管理

上班越久&#xff0c;发现有些数据一直放在那里&#xff0c;根本没有流动&#xff0c;完全没有发挥价值&#xff0c;数据是有生命周期的&#xff0c;而且生命周期管理得好&#xff0c;工作就会更轻松。 目录 引言数据创建示例代码 数据存储示例代码 数据使用示例代码 数据维护示…

JavaScript中闭包的理解

闭包&#xff08;Closure&#xff09;概念&#xff1a;一个函数对周围状态的引用捆绑在一起&#xff0c;内层函数中访问到其外层函数的作用域。简单来说;闭包内层函数引用外层函数的变量&#xff0c;如下图&#xff1a; 外层在使用一个函数包裹住闭包是对变量的保护&#xff0c…

学习python常用的英语单词,有音标,有音节划分,适合英语基础差的人来入门

if [ɪf] 如果 else [els] 否则 while [waɪl] 当...的时候 for [fɔ:r] “对于”或“遍历”&#xff0c;适合于 break [brek] 中断 continue [kəntɪnju:] 继续 con ti nue [kən tɪ nju:] pass [pɑ:s] 通过 height [haɪt] 高度 weight [weɪt] 重量 keyword [ki:w…

sping-10

什么是 bean 装配 在Java中&#xff0c;bean装配是一种将对象&#xff08;也称为bean&#xff09;与其他对象之间建立关联关系的方法。这种装配可以通过手动编写代码来实现&#xff0c;也可以使用依赖注入框架&#xff08;如Spring&#xff09;来自动完成。 在bean装配中&…

【计算机视觉系列实战教程 (实战02)】:基于特征点匹配的图像配准

这里写目录标题 1、特征点提取(1)GFTT算法提取特征点A.What&#xff08;什么是GFTT&#xff09;B.GFTT的优势C.How&#xff08;如何使用GFTT算法提取图像特征点&#xff09; (2)FAST算法提取特征点A.What&#xff08;什么是FAST角点&#xff09;B.FAST角点的强度值C.How&#x…

每日Attention学习8——Rectangular self-Calibration Attention

模块出处 [ECCV 24] [link] [code] Context-Guided Spatial Feature Reconstruction for Efficient Semantic Segmentation 模块名称 Rectangular self-Calibration Attention (RCA) 模块作用 空间注意力 模块结构 模块代码 import torch import torch.nn as nn import tor…

Ubuntu 22.04.1 LTS 离线安装Docker

确定linux版本 cat /etc/lsb-release DISTRIB_IDUbuntuDISTRIB_RELEASE22.04DISTRIB_CODENAMEjammyDISTRIB_DESCRIPTION"Ubuntu 22.04.1 LTS"确定dpkg版本 sudo dpkg --print-architecture amd64下载地址 https://download.docker.com/linux/ubuntu/dists/jamm…

C++ | Leetcode C++题解之第216题组合总和III

题目&#xff1a; 题解&#xff1a; class Solution { private:vector<vector<int>> res;void backtracking(int k, int n, vector<int> ans){if(k 0 || n < 0){if(k 0 && n 0){res.emplace_back(ans);}return;}int start (ans.size() 0 ?…

深入解析Transformer中的多头自注意力机制:原理与实现

深入解析Transformer中的多头自注意力机制&#xff1a;原理与实现 Transformer模型自2017年由Vaswani等人提出以来&#xff0c;已经成为自然语言处理&#xff08;NLP&#xff09;领域的一个里程碑。其核心机制之一——多头自注意力&#xff08;Multi-Head Attention&#xff0…

字节一年,人间三年

想来字节做研发&#xff0c;可以先看我这三年的体会和建议。 大家好&#xff0c;我是白露啊。 今天和大家分享一个真实的故事&#xff0c;是关于字节网友分享自己三年的工作经历和感受。 由于白露也曾在字节待过两年&#xff0c;可以说&#xff0c;说的都对。 你有没有想过来…