摘要:自定義注解上面是一個自定義的注解類,使用元注解來定義自定義注解,自定義注解的函數(shù)名就是參數(shù)名,函數(shù)返回類型是變量的類型。自定義注解來對字段進行一定的約束如在通信的雙方。
在我們編程過程中,會經(jīng)常需要使用到注解,在使用spring進行應用構(gòu)建的過程中會使用到非常多的spring注解。這篇就來談一談我們是如何去定義自己的注解在程序中進行使用的。
0x01 元注解jdk1.8給我們提供了如下注解:
1.@Target 2.@Retention 3.@Documented 4.@Inherited 5.@Native 6.@Repeatable
上面這些類型都在jdk提供的java.lang.annotation包下,下面介紹兩個常用的注解類:
一、Target:描述注解的作用范圍,表示這個注解能用在什么什么地方。取值(ElementType)有:
1.CONSTRUCTOR:用于描述構(gòu)造器 2.FIELD:用于描述域 3.LOCAL_VARIABLE:用于描述局部變量 4.METHOD:用于描述方法 5.PACKAGE:用于描述包 6.PARAMETER:用于描述參數(shù) 7.TYPE:用于描述類、接口(包括注解類型) 或enum聲明
上面的定義都在java.lang.annotation.ElementType類中。
二、Retention:描述注解的生命周期。取值有如下幾個(定義在java.lang.annotation.RetentionPolicy中):
1.SOURCE:源文件 2.CLASS:class文件 3.RUNTIME:運行時
平時我們用的比較多的值是RUNTIME,注解在運行時生效。
0x02 自定義注解@Documented @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.FIELD}) public @interface NotNull { public String value() default "1234"; }
上面是一個自定義的注解類,使用元注解來定義自定義注解,自定義注解的函數(shù)名就是參數(shù)名,函數(shù)返回類型是變量的類型。返回類型只能是基本類型、Class、Enum、String,可以通過default來聲明參數(shù)的默認值。
下面來看下如何使用這個注解:
在類的定義中使用上面自定義的注解類:
public class TypeClass { @NotNull public int intType; public String s; @Override public String toString() { return "TypeClass{" + "intType=" + intType + ", s="" + s + """ + "}"; } }
使用上面定義的類:
TypeClass typeClass = new TypeClass(); Field[] fields = TypeClass.class.getDeclaredFields(); for (Field field : fields) { NotNull annotation = field.getAnnotation(NotNull.class); if(annotation != null) { System.out.println(field.getName() + " " +annotation); System.out.println("CFNotNull value: " + annotation.value()); } }
上面的示例中可以拿到TypeClass的所有字段,然后逐個去判斷字段的注解,根據(jù)自己定義的注解去做不同的邏輯操作。
0x03 使用場景1.開篇就提到了spring中我們會用到很多注解。
2.自定義注解來對字段進行一定的約束(如在通信的雙方)。
3.對注解修飾的對象進行說明限制(比如mvc應用對權(quán)限進行集中控制)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65157.html
摘要:注解有以下幾個知識點元數(shù)據(jù)注解的分類內(nèi)置注解自定義注解注解處理器本文先介紹前面?zhèn)€知識點元數(shù)據(jù)注解的分類內(nèi)置注解自定義注解。注解相當于是一種嵌入在程序中的元數(shù)據(jù),可以使用注解解析工具或編譯器對其進行解析,也可以指定注解在編譯期或運行期有效。 大家好,我是樂字節(jié)的小樂,上次說過了Java多態(tài)的6大特性|樂字節(jié),接下來我們來看看Java編程里的注解。showImg(https://segme...
摘要:項目介紹日志脫敏是常見的安全需求。常見的脫敏內(nèi)置方案。支持用戶自定義注解。自定義注解導入自定義注解新增功能。策略優(yōu)先級優(yōu)先生效,然后是系統(tǒng)內(nèi)置注解,最后是用戶自定義注解。讓這些的密碼不進行脫敏定義測試對象定義一個使用自定義注解的對象。 項目介紹 日志脫敏是常見的安全需求。普通的基于工具類方法的方式,對代碼的入侵性太強。編寫起來又特別麻煩。 本項目提供基于注解的方式,并且內(nèi)置了常見的脫敏...
摘要:注解概念注解也被成為元數(shù)據(jù)為我們在代碼中添加信息提供了一種形式化的方式,使我們可以在稍后的某個時刻更容易的使用這些數(shù)據(jù)。 注解 概念 注解(也被成為元數(shù)據(jù))為我們在代碼中添加信息提供了一種形式化的方式,使我們可以在稍后的某個時刻更容易的使用這些數(shù)據(jù)。 注解是 Java 5 所引入的眾多語言變化之一: 注解使得我們可以以編譯器驗證的格式存儲程序的額外信息 注解可以生成描述符文件,甚至是...
摘要:我們定義注解元素時,經(jīng)常使用空字符串作為默認值。也經(jīng)常使用負數(shù)比如表示不存在的含義示例既可以修飾方法,也可以修飾類運行時使用關(guān)鍵字定義注解成員以無參無異常方式聲明。方法的名稱就是參數(shù)的名稱可以使用為成員指定一個默認值浙江大學清華大學張三 Java知識點總結(jié)(注解-自定義注解) @(Java知識點總結(jié))[Java, 注解] 使用@interface自定義注解時,自動繼承了java.lan...
摘要:知識點自定義注解的使用首先我們先介紹自定義注解。元注解的作用就是負責注解其他注解。元注解是一個標記注解,闡述了某個被標注的類型是被繼承的。在定義注解時,不能繼承其他的注解或接口。 知識點: Java自定義注解、spring aop @aspect的使用 首先我們先介紹Java自定義注解。 在開發(fā)過程中,我們實現(xiàn)接口的時候,會出現(xiàn)@Override,有時還會提示寫@SuppressWa...
閱讀 2377·2021-11-23 10:09
閱讀 2927·2021-10-12 10:11
閱讀 2621·2021-09-29 09:35
閱讀 1366·2019-08-30 15:53
閱讀 2292·2019-08-30 11:15
閱讀 2940·2019-08-29 13:01
閱讀 2321·2019-08-28 18:15
閱讀 3397·2019-08-26 12:13