1. 介绍

guava是google开源的一个工具包。其中有很多通用的功能,例如字符串处理、缓存、非空处理等等。

关于其功能和使用说明可以参考并发网上翻译的文章,这里不再赘述:
Google Guava官方教程(中文版)

为什么使用guava可以引用其官方PPT中的观点:

其实你可能发现,一些基本的校验完全可以自己写,但是。。
这些东西仅仅是看起来比较简单,实际上可能比我们想想的要复杂;
用一个公共的lib,别人可能更加容易理解你的代码;
当你用一个主流的开源包的时候,你可能在主流中;
当你发现一个可以提升的点的 时候,如果仅仅是修改自己的私有包,可能没有多少人能够受益;

2. 使用

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>19.0</version>
</dependency>

3. 我和guava的邂逅

主要是最近研究一个开源分布式存储系统,看源码的时候看到了其在实现Netty Server的时候用了这个非空前置检查。为什么采用中方式,而不是传统的代码非空判断呢???知乎上这个问题弱弱求问,google guava工具包,Preconditions.checkNotNull的作用?可以看下,尤其是R大的回答。虽然可能自己做非空判断看起来效果相同,但是这种编码习惯可以更加清晰表达程序以图和方便纠错。

随便放两个回答看下: