斷言
對象、數組、集合
ObjectUtils
StringUtils
CollectionUtil
文件、資源、IO 流
FileCopyUtils
ResourceUtils
StreamUtils
反射、AOP
ReflectionUtils
AopUtils
AopContext
最近發現同事寫了不少重復的工具類,發現其中很多功能,Spring 自帶的都有。于是整理了本文,希望能夠幫助到大家!
斷言
斷言是一個邏輯判斷,用于檢查不應該發生的情況
Assert 關鍵字在 JDK1.4 中引入,可通過 JVM 參數-enableassertions開啟
SpringBoot 中提供了 Assert 斷言工具類,通常用于數據合法性檢查
//要求參數object必須為非空(NotNull),否則拋出異常,不予放行 //參數 message 參數用于定制異常信息。 voidnotNull(Objectobject,Stringmessage) //要求參數必須空(Null),否則拋出異常,不予『放行』。 //和notNull()方法斷言規則相反 voidisNull(Objectobject,Stringmessage) //要求參數必須為真(True),否則拋出異常,不予『放行』。 voidisTrue(booleanexpression,Stringmessage) //要求參數(List/Set)必須非空(NotEmpty),否則拋出異常,不予放行 voidnotEmpty(Collectioncollection,Stringmessage) //要求參數(String)必須有長度(即,NotEmpty),否則拋出異常,不予放行 voidhasLength(Stringtext,Stringmessage) //要求參數(String)必須有內容(即,NotBlank),否則拋出異常,不予放行 voidhasText(Stringtext,Stringmessage) //要求參數是指定類型的實例,否則拋出異常,不予放行 voidisInstanceOf(Classtype,Objectobj,Stringmessage) //要求參數`subType`必須是參數superType的子類或實現類,否則拋出異常,不予放行 voidisAssignable(ClasssuperType,ClasssubType,Stringmessage)
對象、數組、集合
ObjectUtils
獲取對象的基本信息
//獲取對象的類名。參數為 null 時,返回字符串:"null" StringnullSafeClassName(Objectobj) //參數為null時,返回0 intnullSafeHashCode(Objectobject) //參數為 null 時,返回字符串:"null" StringnullSafeToString(boolean[]array) //獲取對象 HashCode(十六進制形式字符串)。參數為 null 時,返回0 StringgetIdentityHexString(Objectobj) //獲取對象的類名和 HashCode。參數為 null 時,返回字符串:"" StringidentityToString(Objectobj) //相當于 toString()方法,但參數為 null 時,返回字符串:"" StringgetDisplayString(Objectobj)
判斷工具
//判斷數組是否為空 booleanisEmpty(Object[]array) //判斷參數對象是否是數組 booleanisArray(Objectobj) //判斷數組中是否包含指定元素 booleancontainsElement(Object[]array,Objectelement) //相等,或同為null時,返回true booleannullSafeEquals(Objecto1,Objecto2) /* 判斷參數對象是否為空,判斷標準為: Optional:Optional.empty() Array:length==0 CharSequence:length==0 Collection:Collection.isEmpty() Map:Map.isEmpty() */ booleanisEmpty(Objectobj)
其他工具方法
//向參數數組的末尾追加新元素,并返回一個新數組 A[]addObjectToArray(A[]array,Oobj) //原生基礎類型數組-->包裝類數組 Object[]toObjectArray(Objectsource)
StringUtils
字符串判斷工具
//判斷字符串是否為null,或""。注意,包含空白符的字符串為非空 booleanisEmpty(Objectstr) //判斷字符串是否是以指定內容結束。忽略大小寫 booleanendsWithIgnoreCase(Stringstr,Stringsuffix) //判斷字符串是否已指定內容開頭。忽略大小寫 booleanstartsWithIgnoreCase(Stringstr,Stringprefix) //是否包含空白符 booleancontainsWhitespace(Stringstr) //判斷字符串非空且長度不為0,即,NotEmpty booleanhasLength(CharSequencestr) //判斷字符串是否包含實際內容,即非僅包含空白符,也就是NotBlank booleanhasText(CharSequencestr) //判斷字符串指定索引處是否包含一個子串。 booleansubstringMatch(CharSequencestr,intindex,CharSequencesubstring) //計算一個字符串中指定子串的出現次數 intcountOccurrencesOf(Stringstr,Stringsub)
字符串操作工具
//查找并替換指定子串 Stringreplace(StringinString,StringoldPattern,StringnewPattern) //去除尾部的特定字符 StringtrimTrailingCharacter(Stringstr,chartrailingCharacter) //去除頭部的特定字符 StringtrimLeadingCharacter(Stringstr,charleadingCharacter) //去除頭部的空白符 StringtrimLeadingWhitespace(Stringstr) //去除頭部的空白符 StringtrimTrailingWhitespace(Stringstr) //去除頭部和尾部的空白符 StringtrimWhitespace(Stringstr) //刪除開頭、結尾和中間的空白符 StringtrimAllWhitespace(Stringstr) //刪除指定子串 Stringdelete(StringinString,Stringpattern) //刪除指定字符(可以是多個) StringdeleteAny(StringinString,StringcharsToDelete) //對數組的每一項執行trim()方法 String[]trimArrayElements(String[]array) //將URL字符串進行解碼 StringuriDecode(Stringsource,Charsetcharset)
路徑相關工具方法
//解析路徑字符串,優化其中的“..” StringcleanPath(Stringpath) //解析路徑字符串,解析出文件名部分 StringgetFilename(Stringpath) //解析路徑字符串,解析出文件后綴名 StringgetFilenameExtension(Stringpath) //比較兩個兩個字符串,判斷是否是同一個路徑。會自動處理路徑中的“..” booleanpathEquals(Stringpath1,Stringpath2) //刪除文件路徑名中的后綴部分 StringstripFilenameExtension(Stringpath) //以“.作為分隔符,獲取其最后一部分 Stringunqualify(StringqualifiedName) //以指定字符作為分隔符,獲取其最后一部分 Stringunqualify(StringqualifiedName,charseparator)
CollectionUtils
集合判斷工具
//判斷List/Set是否為空 booleanisEmpty(Collection>collection) //判斷Map是否為空 booleanisEmpty(Map,?>map) //判斷List/Set中是否包含某個對象 booleancontainsInstance(Collection>collection,Objectelement) //以迭代器的方式,判斷List/Set中是否包含某個對象 booleancontains(Iterator>iterator,Objectelement) //判斷List/Set是否包含某些對象中的任意一個 booleancontainsAny(Collection>source,Collection>candidates) //判斷 List/Set 中的每個元素是否唯一。即 List/Set 中不存在重復元素 booleanhasUniqueObject(Collection>collection)
集合操作工具
//將Array中的元素都添加到List/Set中voidmergeArrayIntoCollection(Objectarray,Collection collection) //將Properties中的鍵值對都添加到Map中 voidmergePropertiesIntoMap(Propertiesprops,Map map) //返回List中最后一個元素 TlastElement(List list) //返回Set中最后一個元素 TlastElement(Set set) //返回參數candidates中第一個存在于參數source中的元素 EfindFirstMatch(Collection>source,Collection candidates) //返回 List/Set 中指定類型的元素。 TfindValueOfType(Collection>collection,Class type) //返回 List/Set 中指定類型的元素。如果第一種類型未找到,則查找第二種類型,以此類推 ObjectfindValueOfType(Collection>collection,Class>[]types) //返回List/Set中元素的類型 Class>findCommonElementType(Collectio>collection)
文件、資源、IO 流
FileCopyUtils
輸入
//從文件中讀入到字節數組中 byte[]copyToByteArray(Filein) //從輸入流中讀入到字節數組中 byte[]copyToByteArray(InputStreamin) //從輸入流中讀入到字符串中 StringcopyToString(Readerin)
輸出
//從字節數組到文件 voidcopy(byte[]in,Fileout) //從文件到文件 intcopy(Filein,Fileout) //從字節數組到輸出流 voidcopy(byte[]in,OutputStreamout) //從輸入流到輸出流 intcopy(InputStreamin,OutputStreamout) //從輸入流到輸出流 intcopy(Readerin,Writerout) //從字符串到輸出流 voidcopy(Stringin,Writerout)
ResourceUtils
從資源路徑獲取文件
//判斷字符串是否是一個合法的 URL 字符串。 staticbooleanisUrl(StringresourceLocation) //獲取URL staticURLgetURL(StringresourceLocation) //獲取文件(在JAR包內無法正常使用,需要是一個獨立的文件) staticFilegetFile(StringresourceLocation)
Resource
//文件系統資源D:... FileSystemResource //URL資源,如file://...http://... UrlResource //類路徑下的資源,classpth:... ClassPathResource //Web容器上下文中的資源(jar包、war包) ServletContextResource //判斷資源是否存在 booleanexists() //從資源中獲得File對象 FilegetFile() //從資源中獲得URI對象 URIgetURI() //從資源中獲得URI對象 URLgetURL() //獲得資源的InputStream InputStreamgetInputStream() //獲得資源的描述信息 StringgetDescription()
StreamUtils
輸入
voidcopy(byte[]in,OutputStreamout) intcopy(InputStreamin,OutputStreamout) voidcopy(Stringin,Charsetcharset,OutputStreamout) longcopyRange(InputStreamin,OutputStreamout,longstart,longend)
輸出
byte[]copyToByteArray(InputStreamin) StringcopyToString(InputStreamin,Charsetcharset) //舍棄輸入流中的內容 intdrain(InputStreamin)
反射、AOP
ReflectionUtils
獲取方法
//在類中查找指定方法 MethodfindMethod(Class>clazz,Stringname) //同上,額外提供方法參數類型作查找條件 MethodfindMethod(Class>clazz,Stringname,Class>...paramTypes) //獲得類中所有方法,包括繼承而來的 Method[]getAllDeclaredMethods(Class>leafClass) //在類中查找指定構造方法 ConstructoraccessibleConstructor(Class clazz,Class>...parameterTypes) //是否是equals()方法 booleanisEqualsMethod(Methodmethod) //是否是hashCode()方法 booleanisHashCodeMethod(Methodmethod) //是否是toString()方法 booleanisToStringMethod(Methodmethod) //是否是從Object類繼承而來的方法 booleanisObjectMethod(Methodmethod) //檢查一個方法是否聲明拋出指定異常 booleandeclaresException(Methodmethod,Class>exceptionType)
執行方法
//執行方法 ObjectinvokeMethod(Methodmethod,Objecttarget) //同上,提供方法參數 ObjectinvokeMethod(Methodmethod,Objecttarget,Object...args) //取消 Java 權限檢查。以便后續執行該私有方法 voidmakeAccessible(Methodmethod) //取消 Java 權限檢查。以便后續執行私有構造方法 voidmakeAccessible(Constructor>ctor)
獲取字段
//在類中查找指定屬性 FieldfindField(Class>clazz,Stringname) //同上,多提供了屬性的類型 FieldfindField(Class>clazz,Stringname,Class>type) //是否為一個"publicstaticfinal"屬性 booleanisPublicStaticFinal(Fieldfield)
設置字段
//獲取target對象的field屬性值 ObjectgetField(Fieldfield,Objecttarget) //設置target對象的field屬性值,值為value voidsetField(Fieldfield,Objecttarget,Objectvalue) //同類對象屬性對等賦值 voidshallowCopyFieldState(Objectsrc,Objectdest) //取消 Java 的權限控制檢查。以便后續讀寫該私有屬性 voidmakeAccessible(Fieldfield) //對類的每個屬性執行callback voiddoWithFields(Class>clazz,ReflectionUtils.FieldCallbackfc) //同上,多了個屬性過濾功能。 voiddoWithFields(Class>clazz,ReflectionUtils.FieldCallbackfc, ReflectionUtils.FieldFilterff) //同上,但不包括繼承而來的屬性 voiddoWithLocalFields(Class>clazz,ReflectionUtils.FieldCallbackfc)
AopUtils
判斷代理類型
//判斷是不是Spring代理對象 booleanisAopProxy() //判斷是不是jdk動態代理對象 isJdkDynamicProxy() //判斷是不是CGLIB代理對象 booleanisCglibProxy()
獲取被代理對象的 class
//獲取被代理的目標class Class>getTargetClass()
AopContext
獲取當前對象的代理對象
ObjectcurrentProxy()
-
數據
+關注
關注
8文章
6909瀏覽量
88850 -
spring
+關注
關注
0文章
338瀏覽量
14312
原文標題:別再自己瞎寫工具類了,Spring Boot 內置工具類應有盡有, 建議收藏!!
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論