guava工具小记
@author lvxk
@date: 2021/12/02
@desc:只截取部分经典方法api讲解,因为JDK8新特性部分功能已足够强大,guava流式及函数式相对于理解起来较难,Io没有apache的工具类好用,并发没有juc的类强大,故省略
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.校验参数
使用Preconditions类提供的常用方法进行校验参数
1.1-checkArgument
参数可以放一个表达式,表达式不成立会抛出一个参数异常
/**
* test checkArgument
*/
@Test
public void test01(){
Object o = new Object();
Preconditions.checkArgument(Objects.isNull(o));
}
适用场景:校验一些请求参数是否合法,或者是返回对象的属性是否与预期一致,不一致则抛出异常
举例:
//适用场景
// 请求参数一些条件校验,其它对象参数同理
if(ObjReq.getField()!=infactValue){
throw e;
}
//改造后
Preconditions.checkArgument(ObjReq.getField()!=infactValue);
框架默认抛出IllegalArgumentException 可自定义工具类抛出对应业务异常
1.2-checkNotNull(T)
参数可以放置任何泛型的对象,如果对象不为空,则返回该对象,对象如果为空,抛出NullPointerException
/**
* test checkNotNull
*/
@Test
public void test02(){
String noNullstr = "testStr";
String nullStr = null;
String emptyStr = "";
Object obj1 = new Object();
Object obj2 = null;
//校验非空字符串
String p1 = Preconditions.checkNotNull(noNullstr);
//校验null字符串 抛异常
String p2 = Preconditions.checkNotNull(noNullstr);
//校验空字符串 不抛异常
String p3 = Preconditions.checkNotNull(emptyStr);
//校验非空对象
Object p4 = Preconditions.checkNotNull(obj1);
//校验空对象 抛异常
Object p5 = Preconditions.checkNotNull(obj2);
}
框架方法默认不能对String空字符串判空,可以自己写个工具类进行封装然后抛出对应业务异常,但是本人不推荐这么用,有点过于啰嗦
这个方法校验非字符串对象不为空比较好用,比如判断Dao查询出来的对象不为空
1.3-Objects.equal(obj1,obj2)
这个方法是com.google.common.base.Objects区别与jdk8的java.util.Objects,这两个功能类似
/**
* 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);
}
一般可以用来比较两个String是否相等,或者两个包装类是否相等
3.集合
待完善
4.缓存
待完善
5.字符串处理(非常好用)
待完善
6.反射
待完善
完.