Java Annotation Overview詳解。本站提示廣大學習愛好者:(Java Annotation Overview詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java Annotation Overview詳解正文
JAVA注解概述:
1. 注解是給編譯器看的,這分歧於正文
2. 三個根本的注解:
@Override 告知編譯器這是在覆寫辦法
@Deprecated 告知編譯器該辦法過時了
@SuppressWarnings("unchecked") 不要正告
= (value={"unchecked"})
3. 注解可以用來替換傳統的設置裝備擺設文件
4. JDK5 開端,Java增長了對元數據(MetaData)的支撐,即Annotation。
自界說注解和反射注解
自界說注解:
1. 新建annotation:(比接口的界說只多了個@符號)
public @interface myAnnotation {
//屬性
String who();
int age();
String gender();
}
2. 設置帶默許值的注解
public @interface YouAnnotation {
String who() default "tom";
int age() default 0;
String gender() default "female";
}
3. 數組情形
public @interface TheyAnnotation {
String[] value(); //必定要有()
}
元Annotation / MetaAnnotation
用來潤飾Annotation的。(可以檢查@Override的源代碼)
@Retention 注解戰略,用於指定該Annotation可以保存的域
RetentionPolicy.CLASS
在字節碼級別有,在運轉級別弗成見(默許)
RetentionPolicy.RUNTIME
三個層級都可見,運轉時可以反射
RetentionPolicy.SOURCE 只在源碼級別上可用,在字節碼級別弗成見
@Target 指定注解可以被用在哪些規模上
@Documented 寫入文檔,在應用javadoc敕令寫入html文檔時,該注解一同被寫入
@Inherited 可繼續性,繼續該類的子類仍然具有父類該注解的特征
ex.反射注解的方法履行銜接數據庫操作:
界說注解以下:
//讓一個注解可以在運轉時可以被反射
@Retention(RetentionPolicy.RUNTIME)
public @interface DbInfo {
String driver() default "com.mysql.jdbc.Driver";
String url() default "url = jdbc:mysql://localhost:3306/academic";
String password() default "1234";
String username() default "root";
}
反射注解:
@DbInfo
public static Connection getConnection() throws Exception{
//獲得該類的字節碼
Class clazz = Demo2.class;
//獲得該類中名為getConnection()的公共辦法
//參數1:辦法名
//參數2:辦法類型參數對應的字節碼對象,沒有的話,即null
Method method = clazz.getMethod("getConnection", null);
//經由過程該辦法,獲得該辦法上界說的注解
DbInfo dbInfo = method.getAnnotation(DbInfo.class);
String driver = dbInfo.driver();
String url = dbInfo.url();
String user = dbInfo.username();
String password = dbInfo.password();
Class.forName(driver);
return DriverManager.getConnection(url, user, password);
}