SpringBoot內建常用工具類
阿新 • • 發佈:2022-05-08
參考連結:https://mp.weixin.qq.com/s/Hxu6_zzk-Z4itNd7ZAzZ3w
1、 Assert 斷言工具類:斷言是一個邏輯判斷,用於檢查不應該發生的情況,通常用於資料合法性檢查
// 要求引數 object 必須為非空(Not Null),否則丟擲異常,不予放行 // 引數 message 引數用於定製異常資訊。 void notNull(Object object, String message) // 要求引數必須空(Null),否則丟擲異常,不予『放行』。 // 和 notNull() 方法斷言規則相反 void isNull(Object object, String message)// 要求引數必須為真(True),否則丟擲異常,不予『放行』。 void isTrue(boolean expression, String message) // 要求引數(List/Set)必須非空(Not Empty),否則丟擲異常,不予放行 void notEmpty(Collection collection, String message) // 要求引數(String)必須有長度(即,Not Empty),否則丟擲異常,不予放行 void hasLength(String text, String message) // 要求引數(String)必須有內容(即,Not Blank),否則丟擲異常,不予放行void hasText(String text, String message) // 要求引數是指定型別的例項,否則丟擲異常,不予放行 void isInstanceOf(Class type, Object obj, String message) // 要求引數 `subType` 必須是引數 superType 的子類或實現類,否則丟擲異常,不予放行 void isAssignable(Class superType, Class subType, String message)
2、ReflectionUtils
2.1、獲取方法
//在類中查詢指定方法 Method findMethod(Class<?> clazz, String name) // 同上,額外提供方法引數型別作查詢條件 Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes) // 獲得類中所有方法,包括繼承而來的 Method[] getAllDeclaredMethods(Class<?> leafClass) // 在類中查詢指定構造方法 Constructor<T> accessibleConstructor(Class<T> clazz, Class<?>... parameterTypes) // 是否是 equals() 方法 boolean isEqualsMethod(Method method) // 是否是 hashCode() 方法 boolean isHashCodeMethod(Method method) // 是否是 toString() 方法 boolean isToStringMethod(Method method) // 是否是從 Object 類繼承而來的方法 boolean isObjectMethod(Method method) // 檢查一個方法是否宣告丟擲指定異常 boolean declaresException(Method method, Class<?> exceptionType)
2.2、執行方法
// 在類中查詢指定方法 Method findMethod(Class<?> clazz, String name) // 同上,額外提供方法引數型別作查詢條件 Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes) // 獲得類中所有方法,包括繼承而來的 Method[] getAllDeclaredMethods(Class<?> leafClass) // 在類中查詢指定構造方法 Constructor<T> accessibleConstructor(Class<T> clazz, Class<?>... parameterTypes) // 是否是 equals() 方法 boolean isEqualsMethod(Method method) // 是否是 hashCode() 方法 boolean isHashCodeMethod(Method method) // 是否是 toString() 方法 boolean isToStringMethod(Method method) // 是否是從 Object 類繼承而來的方法 boolean isObjectMethod(Method method) // 檢查一個方法是否宣告丟擲指定異常 boolean declaresException(Method method, Class<?> exceptionType)
2.3、獲取欄位
// 在類中查詢指定屬性 Field findField(Class<?> clazz, String name) // 同上,多提供了屬性的型別 Field findField(Class<?> clazz, String name, Class<?> type) // 是否為一個 "public static final" 屬性 boolean isPublicStaticFinal(Field field)
2.4、設定欄位
// 獲取 target 物件的 field 屬性值 Object getField(Field field, Object target) // 設定 target 物件的 field 屬性值,值為 value void setField(Field field, Object target, Object value) // 同類物件屬性對等賦值 void shallowCopyFieldState(Object src, Object dest) // 取消 Java 的許可權控制檢查。以便後續讀寫該私有屬性 void makeAccessible(Field field) // 對類的每個屬性執行 callback void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc) // 同上,多了個屬性過濾功能。 void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc, ReflectionUtils.FieldFilter ff) // 同上,但不包括繼承而來的屬性 void doWithLocalFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)