后端 | Java | 注解
筆記來源:Java入門基礎(chǔ)視頻教程,java零基礎(chǔ)自學(xué)就選黑馬程序員Java入門教程
一、注解(Annotation)
就是Java代碼中的特殊標記,比如@Override、@Test,作用是:讓其他程序根據(jù)注解信息來決定怎么執(zhí)行該程序。
注解可以用在類上、構(gòu)造器上、方法上、成員變量上、參數(shù)上等位置處。
注解的原理:注解本質(zhì)是一個接口,Java中所有注解都是繼承了Annotation接口的。
@注解(...):其實就是一個實現(xiàn)類對象,實現(xiàn)了該注解以及Annotation接口。
二、自定義注解
自己定義的注解。
特殊屬性名:value
如果注解中只有一個value屬性,使用注解時,value名稱可以不寫。
三、元注解
元注解是指修飾注解的注解。
常見的元注解:
@Target:@Target(ElementType.Type),聲明當前被修飾的注解只能在哪些位置使用。
TYPE:類、接口。
FIELD:成員變量。
METHOD:成員方法。
PARAMETER:方法參數(shù)。
CONSTRUCTOR:構(gòu)造器。
LOCAL_VARIABLE:局部變量。
@Retention:@Retention(RetentionPolicy.RUNTIME),聲明注解的保留周期。
SOURCE:只作用在源碼階段,字節(jié)碼文件中不存在。
CLASS(默認值):保留到字節(jié)碼文件階段,運行階段不存在。
RUNTIME(開發(fā)常用):一直保留到運行階段。
四、注解的解析
就是判斷類上、方法上、成員變量上是否存在注解,并把注解里的內(nèi)容給解析出來。
要解析誰上面的注解,就應(yīng)該先拿到誰;比如要解析類上的注解,則應(yīng)該先獲取該類的Class對象,再通過Class對象解析其上面的注解。
Class、Method、Field、Constructor都實現(xiàn)了AnnotatedElement接口,他們都擁有解析注解的能力。
AnnotatedElement接口提供的方法:
public Annotation[] getDeclaredAnnotations():獲取當前對象上面的注解。
public T getDeclaredAnnotation(Class<T> annotationClass):獲取指定的注解對象。
public boolean isAnnotationPresent(Class<Annotation> annotation):判斷當前對象上是否存在某個注解。