使用第三方包的目的:
- 讓代碼有更好的可讀性,比如
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)