之前對於這兩個概念其實沒有多少認識,只知道註解是標記,對於反射的印象就是類比於遊戲進度的回顯吧,慚愧慚愧~~~學習後有了一些更深刻的瞭解,記錄一下,加深印象。java
@Override(重寫方法):被用於標註方法,用於說明所標註的方法是重寫父類的方法安全
@Deprecated(過期方法):用於說明所標註元素,因存在安全問題或有更好選擇而不鼓勵使用,若是強行使用,則編譯器會發出警告編輯器
@SuppressWarnings(消除警告):用於取消編輯器所顯示的警告,有以下屬性值ide
@SafeVarargs(消除泛型警告) : Java 7 開始支持,忽略任何使用參數爲泛型變量的方法或構造函數調用產生的警告函數
@FunctionalInterface (標記函數): Java 8 開始支持,標識一個匿名函數或函數式接口工具
@Repeatable(屢次聲明) : Java 8 開始支持,標識某註解能夠在同一個聲明上使用屢次性能
@Target:用於指定被修飾的自定義註解只能用於修飾程序中哪些元素學習
ElemenetType.CONSTRUCTOR:構造器聲明
ElemenetType.LOCAL_VARIABLE:局部變量聲明
ElemenetType.PACKAGE:包聲明
ElemenetType.PARAMETER :參數聲明
ElemenetType.METHOD :方法聲明
ElemenetType.FIELD:全局屬性聲明(包括 enum 實例)
ElemenetType.TYPE:類,接口(包括註解類型)或enum聲明 編碼
@Retention:用於指定被修飾的自定義註解能夠保留多久,有三個經常使用屬性
RetentionPolicy.SOURCE:在源文件中有效(即源文件保留)
RetentionPolicy.CLASS:在class文件中有效(即class保留)
RetentionPolicy.RUNTIME:在運行時有效(即運行時保留) spa
@Documented:執行javadoc命令時,被該元註解修飾的自定義註解也會生成在文檔中
@Inherited:若是父類所使用的註解有此修飾,則子類能夠繼承該註解,不然不能
1 @Target({ElementType.FIELD,ElementType.TYPE})//可修飾屬性和類 2 @Retention(RetentionPolicy.RUNTIME)//運行時 3 public @interface RefStudy { 4 5 String name() default "a"; 6 String[] mores(); 7 }
方法名 | 返回值 | 參數描述 |
Class.forName(String) | 類的元信息 | 類文件的具體位置 |
類.getClass() | 類的元信息 | |
clz.getDeclaredFields() | 類中的全部屬性 | |
getMethods() | 類的全部方法 | |
invoke(obj) | 經過反射執行方法 | 類的元信息 |
getAnnotation(class) | 註解 | 類的Class |
setAccessible(true) | 設置當前屬性爲可見 | true或者false |
clz.newInstance() | 類的實例對象 |