【三方包系列】apache-common-lang

使用第三方包的目的:

  • 讓代碼有更好的可讀性,比如
if(StringUtils.isEmpty(parameter))
的可讀性優(yōu)于
if(parameter == null || parameter=="")
  • 不必重復(fù)寫基本的判斷邏輯攒驰,讓自己關(guān)注真正的業(yè)務(wù)

apache-common是開(kāi)源第三方Java組件中最常用的系列,其中包括了大量jar包啊易。其中apache-common-lang是最核心與基礎(chǔ)的jar包田弥,lang代表language,意為對(duì)Java語(yǔ)言的補(bǔ)充陌兑。例如其中一個(gè)重要的原則就是null兼容沈跨,因?yàn)镴ava中對(duì)null的處理并不優(yōu)雅,程序員一不小心就會(huì)拋出NullPointerException(這一點(diǎn)在同為JVM語(yǔ)言的Groovy中就大大不同)兔综。所以在寫程序的時(shí)候盡量使用apache-common組件提供的工具代碼饿凛。

正因?yàn)樗腔A(chǔ),將它命名為『云南白藥』软驰,意為行走江湖必備涧窒。

ArrayUtils

 int[] intArray = { 1, 2, 3, 3 };
 //數(shù)組轉(zhuǎn)換成字符串
 System.out.println("intArray: " + ArrayUtils.toString(intArray));
 //在一個(gè)數(shù)組中查找某個(gè)元素
 System.out.println("intArray contains '8'? "
                + ArrayUtils.contains(intArray, 8));
 System.out.println("intArray index of '8'? "
                + ArrayUtils.indexOf(intArray, 8));
 System.out.println("intArray last index of '8'? "
                + ArrayUtils.lastIndexOf(intArray, 8));
 //原始類型轉(zhuǎn)換成包裝類
 Integer[] integerArray = ArrayUtils.toObject(intArray);  

StringUtils

  • 語(yǔ)義化判斷
//判斷是否為null和””
StringUtils.isEmpty(“”)
//在前者基礎(chǔ)上,”    “字符串也返回true
StringUtils.isBlank(“”)
StringUtils.isBlank(null)
//和前者相反锭亏,在代碼中使用更加語(yǔ)義化纠吴,容易理解
StringUtils.isNotBlank(str)
//不要再使用Integer.parseInt()方法并在異常攔截塊中做判斷了
StringUtils.isNumeric(str5)
//兩者是否相等,省略了null判斷的過(guò)程
StringUtils.equals(str1,str2)
  • 日志打印
//實(shí)現(xiàn)=======的效果慧瘤,用于打日志
StringUtils.repeat("=", 50);
//實(shí)現(xiàn) %%%%%%%%Customised Header%%%%%%%%效果
String msg = StringUtils.center(" Customised Header ", 50, "%");   
  • String與數(shù)組轉(zhuǎn)化
//將一個(gè)array中的String連接起來(lái)戴已,用分隔符隔開(kāi)
StringUtils.join(array, ","); 
//相反,把用分隔符隔開(kāi)的string轉(zhuǎn)為數(shù)組
StringUtils.split(string, ","); 
  • 可讀性
//加強(qiáng)代碼可讀性锅减,減少if判斷
StringUtils.defaultString(String str, String defaultValue)
//縮寫一個(gè)長(zhǎng)string糖儡,若不足則不干任何事,否則截?cái)嗖⒃谀┪蔡砑印薄?StringUtils.abbreviate(str,5)

ObjectUtils

針對(duì)所有類都可以使用的工具類怔匣,常用方法:

//可以方便的打印各種嵌套復(fù)雜類握联,集合類中所有的值,不必自己去實(shí)現(xiàn)toString()方法劫狠,可以用來(lái)在日志中輸出拴疤。
ObjectUtils.toString()

//增強(qiáng)代碼可讀性,如果obj為null返回defaultObj独泞,這一點(diǎn)在common-lang包中一脈相承
ObjectUtils.defaultIfNull(obj,defaultObj)

//是否相等呐矾,等價(jià)于obj.equals(obj2),省略了null判斷
ObjectUtils.equals(obj,obj2)

反射相關(guān):

  • ClassUtils
  • MethodUtils
  • MemberUtils
  • FieldUtils
//調(diào)用目標(biāo)方法
MethodUtils.invokeMethod(obj,”sayHello”,null)
//得到目標(biāo)類的field懦砂,
Field field = FieldUtils.getField(clazz,”name”)
//然后通過(guò)Field方法得到值
field.getString(obj)

Validate
類似于單元測(cè)試時(shí)的Assert蜒犯,經(jīng)常用于方法塊第一部檢查入?yún)⑹欠窈侠碜殚希舨缓侠韯t不必執(zhí)行邏輯部分。

Validate.isTrue(expression)
Validate.notNull(obj)

不常用罚随,做了解:

RandomStringUtils
簡(jiǎn)單實(shí)現(xiàn)了一些隨機(jī)字符串的功能玉工,比較粗糙

SerializationUtils
封裝了類序列化的功能,與直接寫區(qū)別不大

StringEscapeUtils
轉(zhuǎn)義工具

SystemUtils
提供操作系統(tǒng)淘菩,jdk版本等信息遵班,目測(cè)一般用不上

WordUtils

//轉(zhuǎn)為每個(gè)單詞首字母大寫
WordUtils.capitalize(str)
//將str中的大小寫互相轉(zhuǎn)換
WordUtils.swapCase(str)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市潮改,隨后出現(xiàn)的幾起案子狭郑,更是在濱河造成了極大的恐慌,老刑警劉巖汇在,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翰萨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡糕殉,警方通過(guò)查閱死者的電腦和手機(jī)亩鬼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阿蝶,“玉大人雳锋,你說(shuō)我怎么就攤上這事∠劢啵” “怎么了魄缚?”我有些...
    開(kāi)封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)焚廊。 經(jīng)常有香客問(wèn)我冶匹,道長(zhǎng),這世上最難降的妖魔是什么咆瘟? 我笑而不...
    開(kāi)封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任嚼隘,我火速辦了婚禮,結(jié)果婚禮上袒餐,老公的妹妹穿的比我還像新娘飞蛹。我一直安慰自己,他們只是感情好灸眼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布卧檐。 她就那樣靜靜地躺著,像睡著了一般焰宣。 火紅的嫁衣襯著肌膚如雪霉囚。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天匕积,我揣著相機(jī)與錄音盈罐,去河邊找鬼榜跌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盅粪,可吹牛的內(nèi)容都是我干的钓葫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼票顾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼础浮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起奠骄,我...
    開(kāi)封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤霸旗,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后戚揭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撵枢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年民晒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锄禽。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡潜必,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沃但,到底是詐尸還是另有隱情磁滚,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布宵晚,位于F島的核電站垂攘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏淤刃。R本人自食惡果不足惜晒他,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逸贾。 院中可真熱鬧陨仅,春花似錦、人聲如沸铝侵。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)咪鲜。三九已至狐赡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疟丙,已是汗流浹背猾警。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工孔祸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人发皿。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓崔慧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親穴墅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惶室,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • StringUtils字符串工具類的常用方法 一、StringUtils是什么 StringUtils 方法的操作...
    天下無(wú)憂2000閱讀 11,619評(píng)論 0 5
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理玄货,服務(wù)發(fā)現(xiàn)皇钞,斷路器,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)松捉。 張土汪:刷leetcod...
    土汪閱讀 12,737評(píng)論 0 33
  • 開(kāi)心一笑 【男女朋友一起去逛街隘世,女朋友:哎喲可柿,腳好酸哦。男朋友很緊張:怎么了丙者?是不是踩到檸檬了复斥?】 提出問(wèn)題 La...
    架構(gòu)師啟示錄閱讀 6,844評(píng)論 8 29
  • 我的鄰居“蔣介石”其實(shí)是位如假包換的裹腳老奶奶。她個(gè)子小小械媒,常年梳著一絲不亂的發(fā)髻目锭,穿戴得干凈利落。極愛(ài)...
    瀟湘燕子閱讀 653評(píng)論 0 3