日前在了解java现流行技术时,发现有一些博客都推荐使用或者在学习guava,因此我也去到guava的官方文档中一探究竟,以下是guava wiki链接,也就有了本篇个人学习认识guava的一点点记录。
guava官方文档指出:Guava项目包含我们在基于Java的项目中依赖的几个Google核心库:集合,缓存,基元支持,并发库,通用注释,字符串处理,I / O等。Google员工每天都会在生产服务中使用这些工具。
因为涉及内容较多,本篇只做部分记录,更多详细内容,大伙可以到官方指南学习。
1.使用Optional来避免空指针异常
Guava用Optional<T>表示可能为null的T类型引用。一个Optional实例可能包含非null的引用(称之为引用存在),也可能什么也不包括(称之为引用缺失)。Optional不会包含null值引用。
import com.google.common.base.Optional;
public class test {
public static void main(String[] args) {
//引用存在
Optional<Integer> possible = Optional.of(5);
System.out.println(possible.isPresent());//true
System.out.println(possible.get());//5
Set<Integer> integers = possible.asSet();
System.out.println(integers);//[5]
//引用缺失
String first = null;
Optional<String> optional = Optional.of(first);//java.lang.NullPointerException
String second = String.valueOf("second");
String result = Optional.fromNullable(first).or(second);
System.out.println(result);//second
//引用缺失
Optional<String> absent = Optional.absent();
System.out.println(absent.isPresent()); //false
System.out.println(absent.get());//Optional.get() cannot be called on an absent value
}
}
在jdk1.8中也提供了Optional api,其api与guava有些不同,需要注意。
创建Optional实例(以下都是静态方法):
创建指定引用的Optional实例,若引用为null则快速失败 |
|
创建引用缺失的Optional实例 |
|
创建指定引用的Optional实例,若引用为null则表示缺失 |
用Optional实例查询引用(以下都是非静态方法):
如果Optional包含非null的引用(引用存在),返回true |
|
返回Optional所包含的引用,若引用缺失,则抛出java.lang.IllegalStateException |
|
返回Optional所包含的引用,若引用缺失,返回指定的值 |
|
返回Optional所包含的引用,若引用缺失,返回null |
|
返回Optional所包含引用的单例不可变集,如果引用存在,返回一个只有单一元素的集合,如果引用缺失,返回一个空集合。 |
2.常见的Objects方法
使用Objects.equal执行null敏感的equals判断,从而避免抛出NullPointerException。
package com.example.demo.guava.sample.objects;
import com.google.common.base.Objects;
/**
* @author lovemego
* @desc
* @date 2019/8/28
*/
public