<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          別再自己瞎寫工具類了,SpringBoot內(nèi)置工具類應(yīng)有盡有,建議收藏!!

          共 8310字,需瀏覽 17分鐘

           ·

          2022-05-18 22:58

          作者:CadeCode
          來源:juejin.cn/post/7043403364020781064

          斷言

          1. 斷言是一個(gè)邏輯判斷,用于檢查不應(yīng)該發(fā)生的情況

          2. Assert 關(guān)鍵字在 JDK1.4 中引入,可通過 JVM 參數(shù)-enableassertions開啟

          3. SpringBoot 中提供了 Assert 斷言工具類,通常用于數(shù)據(jù)合法性檢查

          //?要求參數(shù)?object?必須為非空(Not?Null),否則拋出異常,不予放行
          //?參數(shù) message 參數(shù)用于定制異常信息。
          void?notNull(Object?object,?String?message)
          //?要求參數(shù)必須空(Null),否則拋出異常,不予『放行』。
          //?和?notNull()?方法斷言規(guī)則相反
          void?isNull(Object?object,?String?message)
          //?要求參數(shù)必須為真(True),否則拋出異常,不予『放行』。
          void?isTrue(boolean?expression,?String?message)
          //?要求參數(shù)(List/Set)必須非空(Not?Empty),否則拋出異常,不予放行
          void?notEmpty(Collection?collection,?String?message)
          //?要求參數(shù)(String)必須有長度(即,Not?Empty),否則拋出異常,不予放行
          void?hasLength(String?text,?String?message)
          //?要求參數(shù)(String)必須有內(nèi)容(即,Not?Blank),否則拋出異常,不予放行
          void?hasText(String?text,?String?message)
          //?要求參數(shù)是指定類型的實(shí)例,否則拋出異常,不予放行
          void?isInstanceOf(Class?type,?Object?obj,?String?message)
          //?要求參數(shù)?`subType`?必須是參數(shù)?superType?的子類或?qū)崿F(xiàn)類,否則拋出異常,不予放行
          void?isAssignable(Class?superType,?Class?subType,?String?message)

          對(duì)象、數(shù)組、集合

          ObjectUtils

          1. 獲取對(duì)象的基本信息
          //?獲取對(duì)象的類名。參數(shù)為 null 時(shí),返回字符串:"null"?
          String?nullSafeClassName(Object?obj)
          //?參數(shù)為?null?時(shí),返回?0
          int?nullSafeHashCode(Object?object)
          //?參數(shù)為 null 時(shí),返回字符串:"null"
          String?nullSafeToString(boolean[]?array)
          //?獲取對(duì)象 HashCode(十六進(jìn)制形式字符串)。參數(shù)為 null 時(shí),返回?0?
          String?getIdentityHexString(Object?obj)
          //?獲取對(duì)象的類名和 HashCode。?參數(shù)為 null 時(shí),返回字符串:""?
          String?identityToString(Object?obj)
          //?相當(dāng)于 toString()方法,但參數(shù)為 null 時(shí),返回字符串:""
          String?getDisplayString(Object?obj)
          1. 判斷工具
          //?判斷數(shù)組是否為空
          boolean?isEmpty(Object[]?array)
          //?判斷參數(shù)對(duì)象是否是數(shù)組
          boolean?isArray(Object?obj)
          //?判斷數(shù)組中是否包含指定元素
          boolean?containsElement(Object[]?array,?Object?element)
          //?相等,或同為?null時(shí),返回?true
          boolean?nullSafeEquals(Object?o1,?Object?o2)
          /*
          判斷參數(shù)對(duì)象是否為空,判斷標(biāo)準(zhǔn)為:
          ????Optional:?Optional.empty()
          ???????Array:?length?==?0
          CharSequence:?length?==?0
          ??Collection:?Collection.isEmpty()
          ?????????Map:?Map.isEmpty()
          ?*/

          boolean?isEmpty(Object?obj)
          1. 其他工具方法
          //?向參數(shù)數(shù)組的末尾追加新元素,并返回一個(gè)新數(shù)組
          ?A[]?addObjectToArray(A[]?array,?O?obj)
          //?原生基礎(chǔ)類型數(shù)組?-->?包裝類數(shù)組
          Object[]?toObjectArray(Object?source)

          StringUtils

          1. 字符串判斷工具
          //?判斷字符串是否為 null,或?""。注意,包含空白符的字符串為非空
          boolean?isEmpty(Object?str)
          //?判斷字符串是否是以指定內(nèi)容結(jié)束。忽略大小寫
          boolean?endsWithIgnoreCase(String?str,?String?suffix)
          //?判斷字符串是否已指定內(nèi)容開頭。忽略大小寫
          boolean?startsWithIgnoreCase(String?str,?String?prefix)?
          //?是否包含空白符
          boolean?containsWhitespace(String?str)
          //?判斷字符串非空且長度不為?0,即,Not?Empty
          boolean?hasLength(CharSequence?str)
          //?判斷字符串是否包含實(shí)際內(nèi)容,即非僅包含空白符,也就是?Not?Blank
          boolean?hasText(CharSequence?str)
          //?判斷字符串指定索引處是否包含一個(gè)子串。
          boolean?substringMatch(CharSequence?str,?int?index,?CharSequence?substring)
          //?計(jì)算一個(gè)字符串中指定子串的出現(xiàn)次數(shù)
          int?countOccurrencesOf(String?str,?String?sub)
          1. 字符串操作工具
          //?查找并替換指定子串
          String?replace(String?inString,?String?oldPattern,?String?newPattern)
          //?去除尾部的特定字符
          String?trimTrailingCharacter(String?str,?char?trailingCharacter)?
          //?去除頭部的特定字符
          String?trimLeadingCharacter(String?str,?char?leadingCharacter)
          //?去除頭部的空白符
          String?trimLeadingWhitespace(String?str)
          //?去除頭部的空白符
          String?trimTrailingWhitespace(String?str)
          //?去除頭部和尾部的空白符
          String?trimWhitespace(String?str)
          //?刪除開頭、結(jié)尾和中間的空白符
          String?trimAllWhitespace(String?str)
          //?刪除指定子串
          String?delete(String?inString,?String?pattern)
          //?刪除指定字符(可以是多個(gè))
          String?deleteAny(String?inString,?String?charsToDelete)
          //?對(duì)數(shù)組的每一項(xiàng)執(zhí)行?trim()?方法
          String[]?trimArrayElements(String[]?array)
          //?將?URL?字符串進(jìn)行解碼
          String?uriDecode(String?source,?Charset?charset)
          1. 路徑相關(guān)工具方法
          //?解析路徑字符串,優(yōu)化其中的?“..”?
          String?cleanPath(String?path)
          //?解析路徑字符串,解析出文件名部分
          String?getFilename(String?path)
          //?解析路徑字符串,解析出文件后綴名
          String?getFilenameExtension(String?path)
          //?比較兩個(gè)兩個(gè)字符串,判斷是否是同一個(gè)路徑。會(huì)自動(dòng)處理路徑中的?“..”?
          boolean?pathEquals(String?path1,?String?path2)
          //?刪除文件路徑名中的后綴部分
          String?stripFilenameExtension(String?path)?
          //?以?“.?作為分隔符,獲取其最后一部分
          String?unqualify(String?qualifiedName)
          //?以指定字符作為分隔符,獲取其最后一部分
          String?unqualify(String?qualifiedName,?char?separator)

          CollectionUtils

          1. 集合判斷工具.? 我是程序汪
          //?判斷?List/Set?是否為空
          boolean?isEmpty(Collection?collection)
          //?判斷?Map?是否為空
          boolean?isEmpty(Map?map)
          //?判斷?List/Set?中是否包含某個(gè)對(duì)象
          boolean?containsInstance(Collection?collection,?Object?element)
          //?以迭代器的方式,判斷?List/Set?中是否包含某個(gè)對(duì)象
          boolean?contains(Iterator?iterator,?Object?element)
          //?判斷?List/Set?是否包含某些對(duì)象中的任意一個(gè)
          boolean?containsAny(Collection?source,?Collection?candidates)
          //?判斷 List/Set 中的每個(gè)元素是否唯一。即 List/Set 中不存在重復(fù)元素
          boolean?hasUniqueObject(Collection?collection)
          1. 集合操作工具。??Java項(xiàng)目分享 ?最新整理全集
          //?將?Array?中的元素都添加到?List/Set?中
          ?void?mergeArrayIntoCollection(Object?array,?Collection?collection)??
          //?將?Properties?中的鍵值對(duì)都添加到?Map?中
          ?void?mergePropertiesIntoMap(Properties?props,?Map?map)
          //?返回?List?中最后一個(gè)元素
          ?T?lastElement(List?list)??
          //?返回?Set?中最后一個(gè)元素
          ?T?lastElement(Set?set)?
          //?返回參數(shù)?candidates?中第一個(gè)存在于參數(shù)?source?中的元素
          ?E?findFirstMatch(Collection?source,?Collection?candidates)
          //?返回 List/Set 中指定類型的元素。
          ?T?findValueOfType(Collection?collection,?Class?type)
          //?返回 List/Set 中指定類型的元素。如果第一種類型未找到,則查找第二種類型,以此類推
          Object?findValueOfType(Collection?collection,?Class[]?types)
          //?返回?List/Set?中元素的類型
          Class?findCommonElementType(Collection?collection)

          文件、資源、IO 流

          FileCopyUtils

          1. 輸入
          //?從文件中讀入到字節(jié)數(shù)組中
          byte[]?copyToByteArray(File?in)
          //?從輸入流中讀入到字節(jié)數(shù)組中
          byte[]?copyToByteArray(InputStream?in)
          //?從輸入流中讀入到字符串中
          String?copyToString(Reader?in)
          1. 輸出
          //?從字節(jié)數(shù)組到文件
          void?copy(byte[]?in,?File?out)
          //?從文件到文件
          int?copy(File?in,?File?out)
          //?從字節(jié)數(shù)組到輸出流
          void?copy(byte[]?in,?OutputStream?out)?
          //?從輸入流到輸出流
          int?copy(InputStream?in,?OutputStream?out)?
          //?從輸入流到輸出流
          int?copy(Reader?in,?Writer?out)
          //?從字符串到輸出流
          void?copy(String?in,?Writer?out)

          ResourceUtils

          1. 從資源路徑獲取文件
          //?判斷字符串是否是一個(gè)合法的 URL 字符串。
          static?boolean?isUrl(String?resourceLocation)
          //?獲取?URL
          static?URL?getURL(String?resourceLocation)?
          //?獲取文件(在?JAR?包內(nèi)無法正常使用,需要是一個(gè)獨(dú)立的文件)
          static?File?getFile(String?resourceLocation)
          1. Resource
          //?文件系統(tǒng)資源?D:\...
          FileSystemResource
          //?URL?資源,如?file://...?http://...
          UrlResource
          //?類路徑下的資源,classpth:...
          ClassPathResource
          //?Web?容器上下文中的資源(jar?包、war?包)
          ServletContextResource
          //?判斷資源是否存在
          boolean?exists()
          //?從資源中獲得?File?對(duì)象
          File?getFile()
          //?從資源中獲得?URI?對(duì)象
          URI?getURI()
          //?從資源中獲得?URI?對(duì)象
          URL?getURL()
          //?獲得資源的?InputStream
          InputStream?getInputStream()
          //?獲得資源的描述信息
          String?getDescription()

          StreamUtils

          1. 輸入
          void?copy(byte[]?in,?OutputStream?out)
          int?copy(InputStream?in,?OutputStream?out)
          void?copy(String?in,?Charset?charset,?OutputStream?out)
          long?copyRange(InputStream?in,?OutputStream?out,?long?start,?long?end)
          1. 輸出
          byte[]?copyToByteArray(InputStream?in)
          String?copyToString(InputStream?in,?Charset?charset)
          //?舍棄輸入流中的內(nèi)容
          int?drain(InputStream?in)

          反射、AOP

          ReflectionUtils

          1. 獲取方法
          //?在類中查找指定方法
          Method?findMethod(Class?clazz,?String?name)?
          //?同上,額外提供方法參數(shù)類型作查找條件
          Method?findMethod(Class?clazz,?String?name,?Class...?paramTypes)?
          //?獲得類中所有方法,包括繼承而來的
          Method[]?getAllDeclaredMethods(Class?leafClass)?
          //?在類中查找指定構(gòu)造方法
          Constructor?accessibleConstructor(Class?clazz,?Class...?parameterTypes)?
          //?是否是?equals()?方法
          boolean?isEqualsMethod(Method?method)?
          //?是否是?hashCode()?方法?
          boolean?isHashCodeMethod(Method?method)?
          //?是否是?toString()?方法
          boolean?isToStringMethod(Method?method)?
          //?是否是從?Object?類繼承而來的方法
          boolean?isObjectMethod(Method?method)?
          //?檢查一個(gè)方法是否聲明拋出指定異常
          boolean?declaresException(Method?method,?Class?exceptionType)
          1. 執(zhí)行方法
          //?執(zhí)行方法
          Object?invokeMethod(Method?method,?Object?target)??
          //?同上,提供方法參數(shù)
          Object?invokeMethod(Method?method,?Object?target,?Object...?args)?
          //?取消 Java 權(quán)限檢查。以便后續(xù)執(zhí)行該私有方法
          void?makeAccessible(Method?method)?
          //?取消 Java 權(quán)限檢查。以便后續(xù)執(zhí)行私有構(gòu)造方法
          void?makeAccessible(Constructor?ctor)
          1. 獲取字段
          //?在類中查找指定屬性
          Field?findField(Class?clazz,?String?name)?
          //?同上,多提供了屬性的類型
          Field?findField(Class?clazz,?String?name,?Class?type)?
          //?是否為一個(gè)?"public?static?final"?屬性
          boolean?isPublicStaticFinal(Field?field)
          1. 設(shè)置字段
          //?獲取?target?對(duì)象的?field?屬性值
          Object?getField(Field?field,?Object?target)?
          //?設(shè)置?target?對(duì)象的?field?屬性值,值為?value
          void?setField(Field?field,?Object?target,?Object?value)?
          //?同類對(duì)象屬性對(duì)等賦值
          void?shallowCopyFieldState(Object?src,?Object?dest)
          //?取消 Java 的權(quán)限控制檢查。以便后續(xù)讀寫該私有屬性
          void?makeAccessible(Field?field)?
          //?對(duì)類的每個(gè)屬性執(zhí)行?callback
          void?doWithFields(Class?clazz,?ReflectionUtils.FieldCallback?fc)?
          //?同上,多了個(gè)屬性過濾功能。
          void?doWithFields(Class?clazz,?ReflectionUtils.FieldCallback?fc,?
          ??????????????????ReflectionUtils.FieldFilter?ff)
          ?
          //?同上,但不包括繼承而來的屬性
          void?doWithLocalFields(Class?clazz,?ReflectionUtils.FieldCallback?fc)

          AopUtils

          1. 判斷代理類型
          //?判斷是不是?Spring?代理對(duì)象
          boolean?isAopProxy()
          //?判斷是不是?jdk?動(dòng)態(tài)代理對(duì)象
          isJdkDynamicProxy()
          //?判斷是不是?CGLIB?代理對(duì)象
          boolean?isCglibProxy()
          1. 獲取被代理對(duì)象的 class
          //?獲取被代理的目標(biāo)?class
          Class?getTargetClass()

          AopContext

          1. 獲取當(dāng)前對(duì)象的代理對(duì)象
          Object?currentProxy()


          程序汪資料鏈接

          程序汪接的7個(gè)私活都在這里,經(jīng)驗(yàn)整理

          Java項(xiàng)目分享 ?最新整理全集,找項(xiàng)目不累啦 07版

          堪稱神級(jí)的Spring Boot手冊(cè),從基礎(chǔ)入門到實(shí)戰(zhàn)進(jìn)階

          臥槽!字節(jié)跳動(dòng)《算法中文手冊(cè)》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動(dòng)總結(jié)的設(shè)計(jì)模式 PDF 火了,完整版開放下載!


          歡迎添加程序汪個(gè)人微信 itwang009? 進(jìn)粉絲群或圍觀朋友圈


          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  SM无码| 日韩网站中文字幕 | 免费观看亚洲 | 壁特壁最新视频 | 日韩在线a√ |