注解
什么注解黄绩?
注解:annotation(標識羡洁,標簽),從Java5開始支持注解
注解能干什么爽丹?
注解是貼在java程序元素上面
程序元素:類筑煮,方法,字段粤蝎,方法參數(shù)真仲,接口,構(gòu)造函數(shù)初澎,枚舉
注解貼在程序上面有什么用秸应?
在反射的時候,動態(tài)可以獲取字節(jié)碼碑宴,方法软啼,字段等等程序元素,獲取了這些程序元素延柠,那么就能獲取程序元素上貼的注解祸挪。這些注解會參與程序運行提供比較的相關(guān)信息和數(shù)據(jù)
?
枚舉是一個特殊類
注解是一個特殊的接口,所有的注解都繼承自java.lang.annotation這個接口贞间。
完整的注解(從編寫到最終運行)需要三方面的參與贿条。
1.需要定義一個注解。
2.需要一個被貼的程序元素(類增热,方法整以,字段,構(gòu)造器等)
3.第三方程序的支持(賦予我注解的特殊功能)
JDK中內(nèi)置的注解
1.@Override 限定覆寫父類方法
2.@Deprecated標記已過時的成員,被標記的方法不推薦使用.
問題1:有的注解可以貼在類上钓葫,方法上悄蕾,字段上,有的卻只能貼在類上
問題2:有的注解可以有一個或者多個參數(shù)础浮,有的卻不行帆调。
JDK中的元注解
注解:貼在程序元素上面的標簽
元注解:注解的注解(貼在注解上面的注解)
元注解主要用于限定當前的注解能夠貼在哪兒?能夠保留在哪個階段(程序執(zhí)行三個階段
源代碼階段豆同,字節(jié)碼階段番刊,JVM中)
@Retention:表示注解可以保存在哪一個時期.
保存的時期的值,封裝在RetentionPolicy枚舉類中
@Target:表示注解可以貼在哪些位置(類,方法上,構(gòu)造器上等等).
位置的常量封裝在ElementType枚舉類中:
ElementType.ANNOTATION_TYPE只能修飾Annotation
ElementType.CONSTRUCTOR只能修飾構(gòu)造方法
ElementType.FIELD只能修飾字段(屬性),包括枚舉常量
ElementType.LOCAL_VARIABLE只能修飾局部變量
ElementType.METHOD只能修飾方法
ElementType.PACKAGE只能修飾包(極少使用)
ElementType.PARAMETER只能修飾參數(shù)
ElementType.TYPE只能修飾類,接口影锈,枚舉
自定義注解
1. 定義一個注解
語法:注解關(guān)鍵字?@Interface?
2.被貼的程序元素
3.第三方程序參與賦予注解功能(反射程序)