【Java 注解,自定義注解,元注解,注解本質,注解解析】

文章目錄

    • 什么是注解?
    • Java內置注解
    • 自定義注解
    • 元注解
    • 注解的本質
    • 注解解析

什么是注解?

注解是Java編程語言中的一種元數據,提供了有關程序的額外信息。注解以@符號開始,緊跟著注解的名稱和一對括號,括號內包含注解的參數(如果有的話)。注解可以應用在類、方法、字段和其他程序元素上,以提供有關這些元素的信息。

Java內置注解

  1. @Override: 用于標記方法覆蓋了父類中的方法。
  2. @Deprecated: 表示某個元素(如方法或類)已被棄用,不建議使用。
  3. @SuppressWarnings: 用于抑制編譯器警告。

自定義注解

除了內置注解,Java還允許創建自定義注解。自定義注解允許在代碼中添加自定義的元數據信息,以滿足特定需求。要創建自定義注解,需要使用@interface關鍵字:

public @interface MyAnnotation {String value();int version() default 1;
}

上面的代碼定義了一個名為MyAnnotation的自定義注解,它具有兩個成員:valueversion。成員可以包含不同類型的數據,如字符串、整數等,并且可以設置默認值。

元注解

元注解是用于注解其他注解的注解。Java中有幾種常用的元注解,包括:

  1. @Target: 用于指定注解可以應用的目標元素,如類、方法、字段等。
  2. @Retention: 用于指定注解在什么級別可用,包括源代碼、編譯時和運行時。
  3. @Documented: 用于指定注解是否應該包含在Java文檔中。
  4. @Inherited: 用于指定注解是否可以被子類繼承。

注解的本質

在Java中,注解本質上是一個接口,編譯器會將注解轉化為實現該接口的類。這個類會包含注解的成員變量,并提供用于訪問這些成員變量的方法。在運行時,可以使用Java的反射機制來訪問和解析注解信息。

注解解析

要解析注解,需要使用Java的反射機制。

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;public class AnnotationParser {public static void main(String[] args) {Class<?> clazz = MyClass.class;Method[] methods = clazz.getDeclaredMethods();for (Method method : methods) {if (method.isAnnotationPresent(MyAnnotation.class)) {MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);System.out.println("Method: " + method.getName());System.out.println("Value: " + annotation.value());System.out.println("Version: " + annotation.version());}}}
}

在上例中,首先獲取類的方法,然后檢查每個方法是否帶有MyAnnotation注解。如果有,就可以使用getAnnotation方法獲取注解的實例,并訪問其成員變量。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43198.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43198.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43198.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++基礎篇(1)

目錄 前言 1.第一個C程序 2.命名空間 2.1概念理解 2.2namespace 的價值 2.3 namespace的定義 3.命名空間的使用 4.C的輸入輸出 結束語 前言 本節我們將正式進入C基礎的學習&#xff0c;話不多說&#xff0c;直接上貨&#xff01;&#xff01;&#xff01; 1.第一個C程…

【Linux進階】文件系統8——硬鏈接和符號連接:ln

在Linux下面的鏈接文件有兩種&#xff0c; 一種是類似Windows的快捷方式功能的文件&#xff0c;可以讓你快速地鏈接到目標文件&#xff08;或目錄)&#xff1b;另一種則是通過文件系統的inode 鏈接來產生新文件名&#xff0c;而不是產生新文件&#xff0c;這種稱為硬鏈接&…

base SAS programming學習筆記10(combine data)

1.一對一合并 基本格式如下&#xff1a; data output-data-set; set data-set1; set data-set2;(data-set1和data-set2可以是相同的數據集&#xff0c;可以添加多個set 語句來實現上述的一對一合并) run; 輸出數據集結果如下&#xff1a; a.會包含所有輸入數據的變量名&#x…

小米手機永久刪除的照片怎么找回?這兩個方法千萬不要錯過!

小米手機永久刪除的照片怎么找回&#xff1f;身為米粉發燒黨的小編又雙叒叕手殘了&#xff01;本來想在手機回收站中恢復一張照片&#xff0c;結果一個稀里糊涂就把照片點成了“永久刪除”。于是乎難得的休班假期&#xff0c;就變成了小編恢復永久刪除照片的漫漫之路。以下是小…

org.springframework.boot.autoconfigure.EnableAutoConfiguration=XXXXX的作用是什么?

org.springframework.boot.autoconfigure.EnableAutoConfigurationXXXXXXX 這一配置項在 Spring Boot 項目中的作用如下&#xff1a; 自動配置類的指定&#xff1a; 這一配置將 EnableAutoConfiguration 設置為 cn.geek.javadatamanage.config.DataManageAutoConfiguration&…

【2024_CUMCM】TOPSIS法(優劣解距離法)

目錄 引入 層次分析法的局限性 簡介 例子 想法1 想法2 運用實際分數進行處理 想法3 問題 擴展問題&#xff1a;增加指標個數 極大型指標與極小型指標 統一指標類型-指標正向化 標準化處理 計算公式 計算得分 對原公式進行變化 升級到m個指標和n個對象 代碼 …

系統分析師-基礎知識

基礎知識 一、計算機組成與結構1、計算機系統基礎知識1.1 計算機硬件組成1.2 中央處理單元&#xff08;CPU&#xff09;1.3 數據表示1.3.1 R進制轉十進制&#xff1a;1.3.2 十進制轉R進制&#xff1a; 1.4 校驗碼&#xff08;3種校驗碼&#xff09;1.4.1 基本知識1.4.2 奇偶校驗…

D-DPCC: Deep Dynamic Point Cloud Compression via 3D Motion Prediction

1. 論文基本信息 發布于&#xff1a; 2022 2. 創新點 首先提出了一種端到端深度動態點云壓縮框架(D-DPCC)&#xff0c;用于運動估計、運動補償、運動壓縮和殘差壓縮的聯合優化。提出了一種新的多尺度運動融合(MMF)模塊用于點云幀間預測&#xff0c;該模塊提取和融合不同運動流…

首屆UTON區塊鏈開發者計劃大會在馬來西亞圓滿落幕

7月9日&#xff0c;首屆UTON區塊鏈開發者計劃大會在馬來西亞吉隆坡成功舉辦&#xff01; 來自全球頂尖的行業領袖、技術精英和眾多區塊鏈愛好者參與了此次盛會&#xff0c;也標志著UTON區塊鏈生態進入了一個全新的發展階段。 會上&#xff0c;UTON區塊鏈創始人之一唐毅先生以“…

Python 中什么是遞歸函數,如何編寫遞歸函數?

遞歸是計算機科學中的一種基本概念&#xff0c;它指的是函數調用自身的編程技巧。在Python中&#xff0c;遞歸函數是一種通過調用自身來解決問題的函數。這種方法常用于解決可以被分解為較小相同問題的場景&#xff0c;例如階乘計算、斐波那契數列、全排列生成等。 一、遞歸的…

TCP 握手數據流

這張圖詳細描述了 TCP 握手過程中&#xff0c;從客戶端發送 SYN 包到服務器最終建立連接的整個數據流轉過程&#xff0c;包括網卡、內核、進程中的各個環節。下面對每個步驟進行詳細解釋&#xff1a; 客戶端到服務器的初始連接請求 客戶端發送 SYN 包&#xff1a; 客戶端發起…

添加點擊跳轉頁面,優化登錄和注冊頁路由

一、給注銷按鈕添加點擊跳轉至登錄頁 1、在路由中添加登錄頁路由 2、自定義登錄頁面 3、在app.vue頁面找到下拉框組件&#xff0c;添加點擊事件 4、使用vue-router中的useRoute和useRouter 點擊后可以跳轉&#xff0c;但是還存在問題&#xff0c;路徑這里如果我們需要更改登錄…

Linux——公網 IP別名設置,清屏,刪除別名,在linux中提供alias永久化的方法,命令歷史

#### ipe - 公網 IP別名設置&#xff1a; bash alias ipecurl ipinfo.io/ip [rootserver ~]# alias ipecurl ipinfo.io/ip [rootserver ~]# ipe 113.132.176.202[rootserver ~]# #### c - 清屏&#xff0c;一般使用 ctrl l 快捷鍵&#xff0c;也可以將 clear 命令定義得更短&…

JavaScript 作用域 與 var、let、const關鍵字

目錄 一、JavaScript 作用域 1、全局作用域 2、函數作用域 3、塊級作用域 4、綜合示例 5、總結 二、var、let、const 1、var 關鍵字 2、let 關鍵字 3、const 關鍵字 4、總結 5、使用場景 一、JavaScript 作用域 在JavaScript中&#xff0c;作用域是指程序中可訪問…

訂單到期關閉

文章目錄 前言一、場景&#xff1f;二、使用步驟1.項目配置好rocketmq2.讀入數據 其他方式處理訂單到期關閉定時任務 前言 實習期間在做訂單模塊。遇到過訂單到時關閉的場景。 因為我們在通過回調接收第三方訂單狀態的時候&#xff0c;使用了rocketmq&#xff0c;在遇到訂單超…

叁[3],使用Newtonsoft.Json.dll,異常記錄

開發環境 VS2022/.net6.0/WPF 1&#xff0c;異常1,反序列化數組異常。 convertError:"[{"不拉不拉***************************** 原因&#xff1a;檢查是Json字符串的數組格式異常。 正常數組字符串 "result":[{"key1":"value1"…

神經網絡構成、優化、常用函數+激活函數

Iris分類 數據集介紹&#xff0c;共有數據150組&#xff0c;每組包括長寬等4個輸入特征&#xff0c;同時給出輸入特征對應的Iris類別&#xff0c;分別用0&#xff0c;1&#xff0c;2表示。 從sklearn包datasets讀入數據集。 from sklearn import darasets from pandas impor…

vulnhub-NOOB-1

確認靶機 掃描靶機發現ftp Anonymous 的A大小寫都可以 查看文件 解密 登錄網頁 點擊about us會下載一個壓縮包 使用工具提取 steghide info 目標文件 //查看隱藏信息 steghide extract -sf 目標文件 //提取隱藏的文件 steghide embed -cf 隱藏信息的文件 -ef…

什么樣的開放式耳機好用舒服?南卡、倍思、Oladance高人氣質量絕佳產品力薦!

?開放式耳機在如今社會中已經迅速成為大家購買耳機的新趨勢&#xff0c;深受喜歡聽歌和熱愛運動的人群歡迎。當大家談到佩戴的穩固性時&#xff0c;開放式耳機都會收到一致好評。對于熱愛運動的人士而言&#xff0c;高品質的開放式耳機無疑是理想之選。特別是在近年來的一些騎…

算法學習記錄4

L2-012 關于堆的判斷 def checkHeap(heap, target):if target 0:return heapif heap[target] < heap[(target - 1) // 2]:temp heap[target]heap[target] heap[(target - 1) // 2]heap[(target - 1) // 2] tempheap checkHeap(heap, (target - 1) // 2)return heapdef…