java注解的全面分析
全面解析java注解
Java中的常見注解
a.JDK中的注解
@Override 覆蓋父類或者父接口的方法
@Deprecated 表示方法已經(jīng)過時
@SuppressWarnings("deprecation") 忽略方法過時警告
b.常見的第三方注解
例如Spring中的@Autowired(自動注入)
注解的分類
a.按照運(yùn)行機(jī)制分
1.源碼注解
注解只在源碼中存在,編譯成class文件就不存在了
2.編譯時注解
注解在源碼和class文件中都存在
eg:@Override、@Deprecated、@SuppressWarnings
3.運(yùn)行時注解
在運(yùn)行階段還起作用,甚至?xí)绊戇\(yùn)行邏輯
eg:@Autowired
b.按照來源分
1.來自JDK的注解
2.來自第三方的注解
3.自定義注解
c.元注解:注解的注解
自定義注解
1.自定義注解的語法要求
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {
String desc();
String author();
int age() default 18;
}
注意:
- 使用@interface關(guān)鍵字定義注解
- 成員以無參無異常方式聲明
- 可以用default為成員指定一個默認(rèn)值
- 成員類型是受限的,合法的類型包括原始類型以及String、Class、Annotation、Enumeration
- 如果注解只有一個成員,則成員名必須取名為value(),在使用時可以忽略成員名和賦值號(=)
- 注解類可以沒有成員,沒有成員的注解稱為標(biāo)識注解
2.元注解
a.@Target({ElementType.METHOD,ElementType.TYPE})
注解的作用域:
- ElementType.CONSTRUCTOR 構(gòu)造方法聲明
- ElementType.FIELD 字段聲明
- ElementType.LOCAL_VARIABLE 局部變量聲明
- ElementType.METHOD 方法聲明
- ElementType.PACKAGE 包聲明
- ElementType.PARAMETER 參數(shù)聲明
- ElementType.TYPE 類、接口
b.@Retention(RetentionPolicy.RUNTIME)
注解的生命周期:
- RetentionPolicy.SOURCE 只在源碼顯示,編譯時會丟棄
- RetentionPolicy.CLASS 編譯時會記錄到class中,運(yùn)行時忽略
- RetentionPolicy.RUNTIME 運(yùn)行時存在,可以通過反射讀取
c.@Inherited
標(biāo)識性的元注解:允許子類繼承
d.@Documented
生成javadoc時會包含注解
使用自定義注解
語法:@注解名(成員1=成員值1,成員2=成員值2)
@Description(desc="I am demo",author="boy",age=18)
public void demo(){}
解析注解
概念:通過反射獲取類、函數(shù)或成員上的運(yùn)行時注解信息,從而實(shí)現(xiàn)動態(tài)控制程序運(yùn)行的邏輯
以上就是java 注解的實(shí)例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Eclipse的Debug調(diào)試技巧大全(總結(jié))
這篇文章主要介紹了Eclipse的Debug調(diào)試技巧大全(總結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
java實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)人民幣的小例子
java實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)人民幣的小例子,需要的朋友可以參考一下2013-03-03
maven中自定義MavenArchetype的實(shí)現(xiàn)
Maven自身提供了許多Archetype來方便用戶創(chuàng)建Project,為了避免在創(chuàng)建project時重復(fù)的拷貝和修改,我們通過自定義Archetype來規(guī)范顯得還蠻有必要,下面就來介紹一下,感興趣的可以了解一下2025-01-01
java對象與json對象之間互相轉(zhuǎn)換實(shí)現(xiàn)方法示例
這篇文章主要介紹了java對象與json對象之間互相轉(zhuǎn)換實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了java對象與json對象相互轉(zhuǎn)換實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
多數(shù)據(jù)源如何實(shí)現(xiàn)事務(wù)管理
Spring中涉及三個核心事務(wù)處理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus,PlatformTransactionManager提供事務(wù)操作的基本方法,如獲取事務(wù)、提交和回滾2024-09-09
Spring @value和@PropertySource注解使用方法解析
這篇文章主要介紹了Spring @value和@PropertySource注解使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
Jenkins一鍵打包部署SpringBoot應(yīng)用
本文主要介紹了Jenkins一鍵打包部署SpringBoot應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

