斷言
對(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 中引入,可通過(guò) 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)無(wú)法正常使用,需要是一個(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) //獲得類中所有方法,包括繼承而來(lái)的 Method[]getAllDeclaredMethods(Class>leafClass) //在類中查找指定構(gòu)造方法 ConstructoraccessibleConstructor(Class clazz,Class>...parameterTypes) //是否是equals()方法 booleanisEqualsMethod(Methodmethod) //是否是hashCode()方法 booleanisHashCodeMethod(Methodmethod) //是否是toString()方法 booleanisToStringMethod(Methodmethod) //是否是從Object類繼承而來(lái)的方法 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è)屬性過(guò)濾功能。 voiddoWithFields(Class>clazz,ReflectionUtils.FieldCallbackfc, ReflectionUtils.FieldFilterff) //同上,但不包括繼承而來(lái)的屬性 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文章
7335瀏覽量
94757 -
spring
+關(guān)注
關(guān)注
0文章
341瀏覽量
15935
原文標(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)先 登錄
Spring Boot如何實(shí)現(xiàn)異步任務(wù)
Spring Boot Starter需要些什么
Spring Boot嵌入式Web容器原理是什么
Spring Boot框架錯(cuò)誤處理
Spring Boot從零入門1 詳述
Spring Boot特有的實(shí)踐
強(qiáng)大的Spring Boot 3.0要來(lái)了
怎樣使用Kiuwan保護(hù)Spring Boot應(yīng)用程序呢?
Spring Boot Web相關(guān)的基礎(chǔ)知識(shí)
在Spring Boot中如何使用定時(shí)任務(wù)
Spring Boot Actuator快速入門
Spring Boot啟動(dòng) Eureka流程
Spring Boot的啟動(dòng)原理
Spring Boot 內(nèi)置工具類功能
評(píng)論