摘要:注解概念注解也被成為元數(shù)據(jù)為我們在代碼中添加信息提供了一種形式化的方式,使我們可以在稍后的某個時刻更容易的使用這些數(shù)據(jù)。
注解 概念
注解(也被成為元數(shù)據(jù))為我們在代碼中添加信息提供了一種形式化的方式,使我們可以在稍后的某個時刻更容易的使用這些數(shù)據(jù)。
注解是 Java 5 所引入的眾多語言變化之一:
注解使得我們可以以編譯器驗證的格式存儲程序的額外信息
注解可以生成描述符文件,甚至是新的類定義,并且有助于減輕編寫“樣板”代碼的負擔
通過使用注解,你可以將元數(shù)據(jù)保存在 Java 源代碼中
簡單易讀的代碼,編譯器類型檢查,使用 annotation API 為自己的注解構(gòu)造處理工具
Java 5 引入了前三種定義在 java.lang 包中的注解:
@Override:表示當前的方法定義將覆蓋基類的方法。如果你不小心拼寫錯誤,或者方法簽名被錯誤拼寫的時候,編譯器就會發(fā)出錯誤提示。
@Deprecated:如果使用該注解的元素被調(diào)用,編譯器就會發(fā)出警告信息。
@SuppressWarnings:關(guān)閉不當?shù)木幾g器警告信息。
@SafeVarargs:在 Java 7 中加入用于禁止對具有泛型varargs參數(shù)的方法或構(gòu)造函數(shù)的調(diào)用方發(fā)出警告。
@FunctionalInterface:Java 8 中加入用于表示類型聲明為函數(shù)式接口
基本語法 定義注解下面是注解的定義。注解的定義看起來很像接口的定義。事實上,它們和其他 Java 接口一樣,也會被編譯成 class 文件
package com.abc.annotation; import java.lang.annotation.*; @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PermInfo { String pval() default ""; String value() default ""; }
其中 @Target 、Documented和 @Retention為元注解,Java語言目前有 5 種標準注解,以及 5 種元注解:
注解 | 解釋 |
---|---|
@Target | 表示注解可以用于哪些地方??赡艿?ElementType 參數(shù)包括: CONSTRUCTOR:構(gòu)造器的聲明 FIELD:字段聲明(包括 enum 實例) LOCAL_VARIABLE:局部變量聲明 METHOD:方法聲明 PACKAGE:包聲明 PARAMETER:參數(shù)聲明 TYPE:類、接口(包括注解類型)或者 enum 聲明 |
@Retention | 表示注解信息保存的時長??蛇x的 RetentionPolicy 參數(shù)包括: SOURCE:注解將被編譯器丟棄 CLASS:注解在 class 文件中可用,但是會被 VM 丟棄。 RUNTIME:VM 將在運行期也保留注解,因此可以通過反射機制讀取注解的信息 |
@Documented | 將此注解保存在 Javadoc 中 |
@Interited | 允許子類繼承父類的注解 |
@Repeatable | 允許一個注解可以被使用一次或者多次(Java 8) |
注解通常會包含一些表示特定值的元素。當分析處理注解的時候,程序或工具可以利用這些值。注解的元素看起來就像接口的方法,但是可以為其指定默認值。
如果不包含任何元素,那么該注解稱為標記注解(marker annotation)
@PermInfo注解的屬性與方法定義類似。注解的元素在使用時表現(xiàn)為 名-值 對的形式,并且需要放置在 @PermInfo 聲明之后的括號內(nèi)
@PermInfo(value = "測試模塊模塊", pval = "a:test") @RestController @RequestMapping("/test") public class TestController { // 由于ShiroConfig中配置了該路徑可以匿名訪問,所以這接口不需要登錄就能訪問 @GetMapping("/hello") public String hello() { return "hello spring boot"; } }注解處理器
Java 拓展了反射機制的 API 用于幫助你創(chuàng)造這類工具。同時他還提供了 javac 編譯器鉤子在編譯時使用注解。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75628.html
摘要:楊充一定時間內(nèi)該點擊事件只能執(zhí)行一次用來修飾這是一個什么類型的注解。楊充自定義編譯器獲取遍歷,并生成代碼配置文件文件配置的作用是向系統(tǒng)注冊自定義注解處理器,執(zhí)行編譯時使用進行處理。 目錄介紹 01.創(chuàng)建項目步驟 1.1 項目搭建 1.2 項目功能 02.自定義注解 03.創(chuàng)建Processor 04.compiler配置文件 05.編譯jar 06.如何使用 07.編譯生成代...
摘要:使用實現(xiàn)功能運行期注解案例使用簡單的注解,便可以設置布局,等效于使用實現(xiàn)路由綜合型案例比較全面的介紹從零起步,一步一步封裝簡易的路由開源庫。申明注解用的就是。返回值表示這個注解里可以存放什么類型值。 YCApt關(guān)于apt方案實踐與總結(jié) 目錄介紹 00.注解系列博客匯總 01.什么是apt 02.annotationProcessor和apt區(qū)別 03.項目目錄結(jié)構(gòu) 04.該案例作用 ...
摘要:核心注解講解最大的特點是無需配置文件,能自動掃描包路徑裝載并注入對象,并能做到根據(jù)下的包自動配置。所以最核心的個注解就是這是添加的一個注解,用來代替配置文件,所有這個配置文件里面能做到的事情都可以通過這個注解所在類來進行注冊。 最近面試一些 Java 開發(fā)者,他們其中有些在公司實際用過 Spring Boot, 有些是自己興趣愛好在業(yè)余自己學習過。然而,當我問他們 Spring Boo...
摘要:中的詳解必修個多線程問題總結(jié)個多線程問題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開源的運行原理從虛擬機工作流程看運行原理。 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 基于 POI 封裝 ExcelUtil 精簡的 Excel 導入導出 由于 poi 本身只是針對于 ...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
閱讀 1217·2021-11-23 09:51
閱讀 1995·2021-10-08 10:05
閱讀 2354·2019-08-30 15:56
閱讀 1912·2019-08-30 15:55
閱讀 2647·2019-08-30 15:55
閱讀 2501·2019-08-30 13:53
閱讀 3513·2019-08-30 12:52
閱讀 1263·2019-08-29 10:57