guava工具小記
@author lvxk
@date: 2021/12/02
@desc:只截取部分經(jīng)典方法api講解,因?yàn)镴DK8新特性部分功能已足夠強(qiáng)大,guava流式及函數(shù)式相對于理解起來較難,Io沒有apache的工具類好用,并發(fā)沒有juc的類強(qiáng)大,故省略
1.使用
<!--guava依賴-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<!--junit依賴,用來做ut-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
2.校驗(yàn)參數(shù)
使用Preconditions類提供的常用方法進(jìn)行校驗(yàn)參數(shù)
1.1-checkArgument
參數(shù)可以放一個(gè)表達(dá)式,表達(dá)式不成立會拋出一個(gè)參數(shù)異常
/**
* test checkArgument
*/
@Test
public void test01(){
Object o = new Object();
Preconditions.checkArgument(Objects.isNull(o));
}
適用場景:校驗(yàn)一些請求參數(shù)是否合法,或者是返回對象的屬性是否與預(yù)期一致,不一致則拋出異常
舉例:
//適用場景
// 請求參數(shù)一些條件校驗(yàn),其它對象參數(shù)同理
if(ObjReq.getField()!=infactValue){
throw e;
}
//改造后
Preconditions.checkArgument(ObjReq.getField()!=infactValue);
框架默認(rèn)拋出IllegalArgumentException 可自定義工具類拋出對應(yīng)業(yè)務(wù)異常
1.2-checkNotNull(T)
參數(shù)可以放置任何泛型的對象,如果對象不為空,則返回該對象,對象如果為空,拋出NullPointerException
/**
* test checkNotNull
*/
@Test
public void test02(){
String noNullstr = "testStr";
String nullStr = null;
String emptyStr = "";
Object obj1 = new Object();
Object obj2 = null;
//校驗(yàn)非空字符串
String p1 = Preconditions.checkNotNull(noNullstr);
//校驗(yàn)null字符串 拋異常
String p2 = Preconditions.checkNotNull(noNullstr);
//校驗(yàn)空字符串 不拋異常
String p3 = Preconditions.checkNotNull(emptyStr);
//校驗(yàn)非空對象
Object p4 = Preconditions.checkNotNull(obj1);
//校驗(yàn)空對象 拋異常
Object p5 = Preconditions.checkNotNull(obj2);
}
框架方法默認(rèn)不能對String空字符串判空,可以自己寫個(gè)工具類進(jìn)行封裝然后拋出對應(yīng)業(yè)務(wù)異常,但是本人不推薦這么用,有點(diǎn)過于啰嗦
這個(gè)方法校驗(yàn)非字符串對象不為空比較好用,比如判斷Dao查詢出來的對象不為空
1.3-Objects.equal(obj1,obj2)
這個(gè)方法是com.google.common.base.Objects區(qū)別與jdk8的java.util.Objects,這兩個(gè)功能類似
/**
* test com.google.common.base.Objects.equal
*/
@Test
public void test03(){
String str1 = null;
String str2 = "";
String str3 = "1";
String str4 = "1";
//false
boolean b1 = com.google.common.base.Objects.equal(str1, str2);
//false
boolean b2 = com.google.common.base.Objects.equal(str2, str3);
//true
boolean b3 = com.google.common.base.Objects.equal(str3, str4);
}
一般可以用來比較兩個(gè)String是否相等,或者兩個(gè)包裝類是否相等
3.集合
待完善
4.緩存
待完善
5.字符串處理(非常好用)
待完善
6.反射
待完善
完.