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