第一大塊 Junit測試類、註解、元註解
一、Junit測試類
- a.必須部分,在前面加上@Test註解,就可以進行單獨測試了
- b.Junit測試類常用註解
@Before 初始化,自動執行
@Test 測試段語句
@After 釋放資源,自動執行
二、註解
- a.格式:都是帶返回值的方法
public @interface 註解名{
屬性列表 基本數據類型|String|枚舉|註解|以上類型的數組;
}
- b.使用註解時需要初始化註解裏沒有初始化的屬性;
- c.常用註解:
@Overide 檢測方法是否繼承自父接口
@Deprecated 表示方法已經過時
@SuppressWarmings 壓制這個類上的警告
三、元註解
@Target:描述註解能夠作用的位置
使用(只寫了該如何賦值):枚舉類型[]|數組 ElementType.TYPE|表示註解只能作用再類上、
ElementType.METHOD|表示該類只能作用在方法上、
ElementType|FIEID可以作用於成員變量上
@Retention:描述註解被保留的階段(3個階段 source|classs|runtime)
使用 RetentionPolicy.RUNTIME 表示註解會一直保留到3個階段都結束
@Documented:描述註解是否被抽取到API文檔中
@Inherited:描述註解是否被子類繼承(被該元註解描述的註解所修飾的類,任何繼承該類的子類都將會繼承這個被元註解修飾的註解)
第二大塊 類對象、各種成員對象
一、類對象
Class.forName(“全類名(包路徑+類名)”);
類名.class;
對象.getClass();
二、成員變量對象
- a.獲取成員變量對象方法
Field[] getFields() :獲取所有public修飾的成員變量
Field getField(String name) 獲取指定名稱的 public修飾的成員變量
Field[] getDeclaredFields() 獲取所有的成員變量,不考慮修飾符
Field getDeclaredField(String name) 和上面不同的是可以對任意權限修飾符 修飾的field對象進行操作,但是不一定能獲取,需要配合暴力反射
- b.設置、獲取成員對象
void set(Object obj(這裏是指創建字節碼對象的類的實例化對象), Object value)
get(Object obj) //參數是指類的實例化對象
setAccessible(true):暴力反射
三、構造方法對象
- a.構造方法對象獲取
Constructor<?>[] getConstructors()
Constructor getConstructor(類<?>… parameterTypes) 黃體參數其實就是目標方法中參數列表的重寫 示例:String.class
Constructor getDeclaredConstructor(類<?>… parameterTypes)
Constructor<?>[] getDeclaredConstructors()
- b.實例化對象創建
T newInstance(Object… initargs) 參數列表
setAccessible(true):暴力反射
四、成員方法
- a.成員方法對象獲取
Method[] getMethods() 只能獲取public方法,但是可以獲取繼承的父類或者接口的方法
Method getMethod(String name, 類<?>… parameterTypes)
Method[] getDeclaredMethods() 可以獲取任何權限修飾符修飾的方法,但是不能獲取父類或者父接口中的方法
Method getDeclaredMethod(String name, 類<?>… parameterTypes)
- b.成員方法的調用
setAccessible(true):暴力反射
Object invoke(Object obj, Object… args)
五、獲取類名
String getName();