Java常用注解通俗解釋

注解就像是給Java代碼貼的"便利貼",它們不會改變代碼本身的邏輯,但能給編譯器、開發工具或運行時環境提供額外信息。下面我用最通俗的方式解釋Java中最常用的注解:

一、基礎篇:人人必知的注解

1. `@Override` - "我是重寫的!"
? ?? 貼在方法上,告訴編譯器:"這個方法是我從爸爸類(父類)那里繼承來后改寫的"

? ?? 如果實際上沒重寫任何方法,編譯器會報錯提醒你

? ?? 例子:

? ? ?```java
? ? ?@Override
? ? ?public String toString() { return "我是重寫過的toString"; }
? ? ?```

2. `@Deprecated` - "過時了,別用了!"
? ?? 貼在類、方法或字段上,相當于掛個"即將停用"的牌子

? ?? 用了帶這個標記的代碼,編譯器會給出警告

? ?? 例子:

? ? ?```java
? ? ?@Deprecated
? ? ?public void oldMethod() { ... } // 這個方法以后要淘汰了
? ? ?```

3. `@SuppressWarnings` - "別吵,我知道有問題!"
? ?? 讓編譯器"閉嘴",不要顯示某些警告

? ?? 常用參數:`"unchecked"`(忽略泛型警告)、`"deprecation"`(忽略過時API警告)

? ?? 例子:

? ? ?```java
? ? ?@SuppressWarnings("unchecked")
? ? ?List list = new ArrayList(); // 我知道沒寫泛型,別提醒我了
? ? ?```

二、框架篇:Spring家族常用注解

4. `@Controller` / `@Service` / `@Repository` - "我是特種兵!"
? ?? Spring給不同角色的類貼的標簽:

? ? ?? `@Controller`:處理網頁請求的"門衛"

? ? ?? `@Service`:處理業務的"服務員"

? ? ?? `@Repository`:管數據庫的"倉庫管理員"

? ?? 例子:

? ? ?```java
? ? ?@Controller
? ? ?public class UserController { ... } // 我是處理用戶請求的
? ? ?```

5. `@Autowired` - "快給我找個合適的來!"
? ?? 貼在字段或構造方法上,相當于說:"Spring大哥,幫我自動找個合適的對象塞進來"

? ?? 例子:

? ? ?```java
? ? ?@Autowired
? ? ?private UserService userService; // 隨便給我個UserService就行
? ? ?```

6. `@RequestMapping` - "找我請按門牌號!"
? ?? 貼在Controller類或方法上,定義訪問路徑

? ?? 例子:

? ? ?```java
? ? ?@RequestMapping("/user")
? ? ?public class UserController {
? ? ? ? ?@RequestMapping("/list")
? ? ? ? ?public String list() { ... } // 訪問路徑是 /user/list
? ? ?}
? ? ?```

三、偷懶神器:Lombok注解

7. `@Getter` / `@Setter` - "別寫get/set方法了!"
? ?? 自動生成字段的getter和setter方法

? ?? 例子:

? ? ?```java
? ? ?@Getter @Setter
? ? ?public class User {
? ? ? ? ?private String name; // 自動生成getName()和setName()
? ? ?}
? ? ?```

8. `@Data` - "全家桶套餐!"
? ?? 一次性包含`@Getter`、`@Setter`、`@ToString`、`@EqualsAndHashCode`等

? ?? 例子:

? ? ?```java
? ? ?@Data
? ? ?public class User {
? ? ? ? ?private String name;
? ? ? ? ?private int age; // 自動生成所有常用方法
? ? ?}
? ? ?```

9. `@Builder` - "鏈式構造了解一下!"
? ?? 自動生成建造者模式的代碼

? ?? 例子:

? ? ?```java
? ? ?@Builder
? ? ?public class User {
? ? ? ? ?private String name;
? ? ? ? ?private int age;
? ? ?}
? ? ?// 使用:User.builder().name("張三").age(20).build();
? ? ?```

四、測試篇:JUnit注解

10. `@Test` - "我是測試用例!"
? ? ? 標記這是一個測試方法

? ? ? 例子:

? ? ? ```java
? ? ? @Test
? ? ? public void testAdd() {
? ? ? ? ? assertEquals(3, 1+2); // 測試1+2是否等于3
? ? ? }
? ? ? ```

11. `@Before` / `@After` - "測試前后我要做點事!"
? ? ? `@Before`:每個測試方法執行前先執行我

? ? ? `@After`:每個測試方法執行后要執行我

? ? ? 例子:

? ? ? ```java
? ? ? @Before
? ? ? public void setUp() { System.out.println("測試要開始了"); }
? ? ??
? ? ? @After?
? ? ? public void tearDown() { System.out.println("測試結束了"); }
? ? ? ```

五、數據庫篇:JPA/Hibernate注解

12. `@Entity` - "我是數據庫表!"
? ? ? 標記這個類對應數據庫中的一張表

? ? ? 例子:

? ? ? ```java
? ? ? @Entity
? ? ? public class User { ... } // 對應數據庫user表
? ? ? ```

13. `@Id` - "我是主鍵!"
? ? ? 標記這個字段是表的主鍵

? ? ? 例子:

? ? ? ```java
? ? ? @Id
? ? ? private Long id; // 這是主鍵字段
? ? ? ```

14. `@Column` - "我是表字段!"
? ? ? 標記字段對應表的列,可以指定列名等屬性

? ? ? 例子:

? ? ? ```java
? ? ? @Column(name = "user_name")
? ? ? private String name; // 對應user_name列
? ? ? ```

總結:注解就像便利貼

? 給編譯器看的:如`@Override`、`@Deprecated`

? 給框架看的:如Spring的`@Controller`、JPA的`@Entity`

? 給工具看的:如Lombok的各種注解

? 給測試工具看的:如JUnit的各種注解


記住:注解本身不做任何事情,它們只是提供信息,真正干活的是讀取這些注解的處理器或框架!

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

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

相關文章

vscode chrome調試怎么在所有瀏覽器都好使

chrome調試時只能在打開的瀏覽器里進行調試,其它打開的chrome瀏覽器就不能調試了,怎么解決。 右鍵點擊 Chrome 的快捷方式圖標,選擇屬性 在目標一欄,最后加上--remote-debugging-port9222 注意要用空格隔開 lanch.json 文件配置 …

Unity PBR基礎知識

PBR原理 基于物理的渲染(Physically Based Rendering,PBR)是指使用基于物理原理和微平面理論建模的著色/光照模型,以及使用從現實中測量的表面參數來準確表示真實世界材質的渲染理念。 PBR基礎理念 微平面理論(Micr…

COM組件使用方法

普通COM組件(如DLL)僅暴露方法/屬性接口,而ActiveX控件(如OCX)需要可視化交互(如按鈕、表格),需通過 ??AxInterop?? 包裝器實現宿主環境集成。 項目中引入ActiveX控件流程如下。…

在 Spring Boot 項目中如何使用索引來優化 SQL 查詢?

在 Spring Boot 項目中使用索引來優化 SQL 查詢是提升數據庫性能最常用的方法之一。下面是詳細的步驟和實踐指南: 核心目標:讓數據庫能夠通過掃描索引(小范圍、有序的數據結構)快速定位到所需數據行,而不是掃描整個表…

Vue3生產環境與Vue Devtools

在 Vue 3 的生產環境中,默認情況下 Vue Devtools 是無法正常使用 的,但開發者可以通過配置強制啟用。以下是關鍵信息總結: 📌 核心結論 默認不可用 Vue 3 生產構建會移除 Devtools 支持以優化性能和安全性。 可強制啟用 通過構建…

ARP滲透學習1

ARP協議工作原理 1. 什么是ARP ARP定義: 地址解析協議(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。 2. 工作原理 ARP表: 每臺計算機都需要一個ARP表,用來保存IP地址和MAC地址的映射關系。查詢過…

甲骨文云2025深度解析:AI驅動的云原生生態與全球化突圍

一、戰略轉型:從數據庫巨頭到AI云服務先鋒 1. 技術重心向AI與云深度遷移 甲骨文在2025年加速向AI原生云架構轉型,其核心戰略圍繞生成式AI與量子計算展開。通過推出Oracle 23ai自治數據庫,深度集成AI向量搜索功能,并重構云基礎設…

【網絡原理】TCP異常處理(二):連接異常

目錄 一. 由進程崩潰引起的連接斷開 二. 由關機引起的連接斷開 三. 由斷電引起的連接斷開 四. 由網線斷開引起的連接斷開 一. 由進程崩潰引起的連接斷開 在一般情況下,進程無論是正常結束,還是異常崩潰,都會觸發回收文件資源,…

想做博聞強記的自己

2025年4月29日,13~25℃,還好 待辦: 冶金《物理》期末測試 閱卷(冶金《物理》期末測試試卷) 重修《物理》《物理2》電子材料歸檔 規則變更,《高等數學2》期末試卷推倒重來 遇見:直播畫面。 感受…

IP屬地是實時位置還是自己設置

刷微博、抖音時,評論區總能看到“IP屬地”?這個突然冒出來的小標簽,讓不少網友摸不著頭腦:?IP屬地是實時位置,還是可以自己設置??別急,今天咱們就來聊聊這個話題! 1、什么是IP屬地…

水力壓裂多裂縫擴展誘發光纖應變演化試驗研究

1.概述 本文基于OFDR技術的光纖應變監測方法,監測了真三軸條件下人造巖石試樣與頁巖的水力壓裂試驗。結果表明,OFDR技術能以毫米級分辨率實時監測裂縫起裂、擴展及閉合全過程,并建立基于應變演化的裂縫判別準則,為光纖壓裂監測的…

4、RabbitMQ的七種工作模式介紹

目錄 一、Simple(簡單模式) 1.1 概念 1.2 代碼實現 消費者 運行結果 二、Work Queue(工作隊列) 2.1 概念 1.2 代碼實現 生產者 消費者 運行結果 三、Publish/Subscribe(發布/訂閱模式) 3.1 概念 3.2 代碼實現 生產者…

厚銅PCB鉆孔工藝全解析:從參數設置到孔壁質量的關鍵控制點

在現代電子設備中,厚銅PCB(印刷電路板)扮演著至關重要的角色。它們不僅為電子元件提供了支撐,還實現了電路之間的連接。然而,在生產厚銅PCB時,鉆孔是一個關鍵環節。本文將為您介紹厚銅PCB生產中鉆孔的科普知…

缺口拼圖,非線性坐標關聯

繼上一篇文章, 歡迎一起交流探討 https://t.zsxq.com/GEIze

OTA(Over-The-Air)升級

簡介: OTA(Over-the-Air)是一種通過無線方式進行數據傳輸和更新的技術,通常用于電子設備(如智能手機、汽車、物聯網設備等)的軟件、固件或配置更新。OTA可以在設備與服務器之間進行遠程傳輸,用戶…

fastapi和flaskapi有什么區別

FastAPI 和 Flask 都是 Python 的 Web 框架,但設計目標和功能特性有顯著差異。以下是它們的核心區別: 1. ?性能與異步支持? ?FastAPI? 基于 ?Starlette?(高性能異步框架)和 ?Pydantic?(數據校驗庫)…

RCS認證是什么?RCS認證的好處?RCS認證所需要的資料

1. RCS(Recycled Claim Standard)認證 定義:由 Textile Exchange(紡織品交易所) 制定的國際標準,用于驗證產品中回收材料(如再生纖維、塑料、金屬等)的含量和供應鏈的可追溯性&…

10 基于Gazebo和Rviz實現導航仿真,包括SLAM建圖,地圖服務,機器人定位,路徑規劃

在9中我們已經實現了機器人的模塊仿真,現在要在這個基礎上實現SLAM建圖,地圖服務,機器人定位,路徑規劃 1. 還是在上述機器人的工作空間下,新建功能包(nav),導入依賴 gmapping ma…

OpenGL----OpenGL紋理與紋理緩存區

在現代計算機圖形學中,紋理(Texture)是一個至關重要的概念。它不僅可以為幾何體表面添加細節和真實感,還可以用于實現各種復雜的視覺效果和數據處理。在OpenGL中,紋理的應用范圍非常廣泛,從基本的顏色映射到高級的陰影映射、環境映射等。本文將深入探討OpenGL紋理與紋理緩…

Scikit-learn工具介紹與數據集

一、Scikit-learn簡介與安裝 Scikit-learn是Python中最流行的機器學習庫之一,它提供了簡單高效的數據挖掘和數據分析工具。 Python語言機器學習工具 Scikit-learn包括許多智能的機器學習算法的實現 Scikit-learn文檔完善,容易上手,豐富的A…