註解與反射基礎回顧
阿新 • • 發佈:2022-03-01
1 . 內建註解
-
@Override,定義在lang.Override中,只用於修飾方法,表明表明一個方法宣告打算重寫超類中另一個宣告。
-
@Depracated,定義在lang.Depracated中,修飾方法,屬性,類,表明不鼓勵使用,很危險或有更好的存在。
-
@Suppress Warnings,定義在lang.Suppress Warnings中,用來抑制編譯時的警告資訊 , 需要引數。
2 . 元註解
負責註解其他註解,java定義了4個標準的meta-annotation型別,用來提供對其他annotation型別作說明。
這些型別和他們支援的類在lang.annotation包中可以找到
-
@Target,用於描述註解的使用範圍,即註解可以用在哪些地方。
-
@Retention,表示需要在什麼級別儲存該註釋資訊,用於描述註解的生命週期(SOURCE<CLASS<RUNTIME(一般情況))
-
@Document,說明該註解將被包含在javadoc中。
-
Inherited,說明子類可以繼承父類中的該註解。
3 . 自定義註解
//自定義一個註解
//註解的作用域Target,TYPE類,Method方法
2、反射
Java Reflection(反射)是java被視為動態語言的關鍵,反射機制允許程式在執行期藉助Reflction API去的任何類的內部資訊並能直接操作任何物件的內部屬性以及方法。
-
優點:動態建立物件和編譯,體現靈活性。
-
缺點:對效能有影響,反射屬於解釋操作,慢於直接操作。
通過反射獲取類例項方式
//新建一個類人類,類學生繼承人類
class Person{}
class Student extends Person{}
//建立一個學生物件
Person person = new Student();
//方式1:通過物件獲得學生類
Class c1 = person.getClass();
//方式2:forname獲得學生類
Class c2 = Class.forName("src.biji.Student");
//方式3:通過類名.class獲得學生類
Class c3 = Student.class;
//方式4:通過父類型別,獲取學生的父類人類
Class c4 = c1.getSuperclass();
//方式5:基本內建型別的包裝類有一個Type屬性,獲取int型別
Class c5 = Integer.TYPE;