-
<strong>全面解析 java 注解</strong>查看全部
-
JDk自帶注解:
@Override? ?@Deprecated @Suppvisewarning
查看全部 -
Java注解概念:Java提供了一種原程序中的元素關聯任何信息和任何元數據的途徑和方法(注解是在JAVA1.5中引入的)。
學習注解的目的?
1、能夠讀懂別人寫的代碼,尤其是框架相關的代碼。
注解的優點?
2、使編程更加簡潔,代碼更加清晰。
注解可以做什么?
3、?在使用框架的時候會使用到注解。
【一】Java中的常見注解(JDK和第三方定義好的注解)
【二】注解的分類
【三】自定義注解
【四】注解應用實戰
查看全部 -
解析注解:
通過反射獲取類,函數或成員上的運行時注解信息,從而實現動態控制程序運行的邏輯
步驟1:使用類加載器加載類
Class c=Class.forName("com.ann.test.Child");
步驟2:找到類上面的注解
isAnnotationPresent(類類型):Class對象的方法,判斷當前類類型是否存在某個類類型的注解,返回類型為boolean。
boolean isExist=c.isAnnotationPresent(Description.class);
步驟3:獲取類上自定義注解實例,需要強制類型轉換。
Description d=(Description)c.getAnnotation(Description.class);
步驟4:獲取方法上的注解,首先,遍歷所有方法,通過方法對象的isAnnotation查看是否有自定義注解,如果存在則輸出方法的自定義注解的信息。
第二種解析方法:獲取這個方法的所有注解,Annotation [] as=m.getAnnotations();然后遍歷該注解,如果遍歷的注解是Description類型,則把遍歷的注解強轉為Description類型,并進行輸出value()信息。
@Inherited:當自定義注解上使用了該注解,如果在父類上標識該注解,解析一個子類,子類也可以獲取該注解的信息。
查看全部 -
public @interface Description{//使用@interface關鍵字定義注解
?? ?String desc();//成員以無參無異常方式聲明
?? ?String author();//成員類型受限的,合法的類型包括原始類型及String,Class,Annotation,Enumeration
?? ?
?? ?int age() default 18;//可以用default只認一個默認值
}//注解中有一個成員時,則成員名必須取名為value(),在使用的時候可以忽略成員名和賦值號,注解類可以沒有成員,沒有成員的注解稱為標識注解查看全部 -
常見第三方注解:Spring :@Autowired,@Service,@Repository
Mybatis:@InsertProvider,@UpdateProvider,@Options注解的分類:
按照運行機制分:
源碼注解:注解旨在源碼中存在,編譯成.class文件就不存在了
編譯時注解,注解在源碼和.class文件中都存在,象jdk自帶注解三個都是編譯時注解
運行時注解:在運行階段還起作用,甚至會影響運行邏輯的注解.
元注解:給注解進行注解.注解的注解
查看全部 -
package com.ann.test;
public class Test {
?@SuppressWarnings("deprecation")//忽略deprecation的警告
public void? sing() {
?? ? Person person=new Child();
?? ? person.sing();
?}
}查看全部 -
Java注解
看懂別人代碼,看懂注解,讓編程更加簡潔,代碼清晰,注解應用廣泛,自定義注解解決問題
Java提供了一種源程序中的元素關聯任何信息和任何元數據的途徑和方法查看全部 -
解析方法的注解;
方法2
查看全部 -
解析方法的注解;
方法1
查看全部 -
解析注解。
查看全部 -
@Documented //?生成javadoc時會包含注解;
查看全部 -
@Inherited
// 允許子類繼承;
查看全部 -
@Retention(RetentionPolicy.RUNTIME)
/*
SOURCE:只在源碼顯示,編譯時會丟棄;
CLASS:編譯時會記錄到class中,運行時忽略;
RUNTIME:運行時存在,可通過反射讀??;
*/
查看全部 -
元注解:
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetetionPolicy.RUNTIME)
@Inherited
@Documentedpublic?@interface?Description{ ... }
/*
CONSTRUCTOR:構造方法聲明;
FIELD:字段聲明;
LOCAL_VARIABLE:局部變量聲明;
METHOD:方法聲明;
PACKAGE:包聲明;
PARAMETER:參數聲明;
TYPE:類接口;
?*/
@Target({ElementType.METHOD,ElementType.TYPE})
查看全部
舉報