快速了解-注解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.pswp.cn/web/39892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39892.shtml
英文地址,請注明出處:http://en.pswp.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;說的都對。 你有沒有想過來…