Guava 是什么?
Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。
Guava的好处
标准化 - Guava库是由谷歌托管。
高效 - 可靠,快速和有效的扩展JAVA标准库
优化 -Guava库经过高度的优化。
函数式编程 -增加JAVA功能和处理能力。
实用程序 - 提供了经常需要在应用程序开发的许多实用程序类。
验证 -提供标准的故障安全验证机制。
最佳实践 - 强调最佳的做法。
考虑下面的代码片段。
public class GuavaTester { public static void main(String args[]){ GuavaTester guavaTester = new GuavaTester(); Integer a = null; Integer b = new Integer(10); System.out.println(guavaTester.sum(a,b)); } public Integer sum(Integer a, Integer b){ return a + b; } }
运行程序,看到如下结果。
Exception in thread "main" java.lang.NullPointerException at GuavaTester.sum(GuavaTester.java:13) at GuavaTester.main(GuavaTester.java:9)
以下是该代码的问题。
sum() 不采取任何的保护传递的参数为null。
调用函数也并不担心传递一个null 到sum()方法而产生意外。
当程序运行时,NullPointerException异常发生。
为了避免上述问题,null检查要在每个这样存在问题地方。
让我们来看看使用Optional,Guava 提供实用工具类来标准化方式解决上述问题。
import com.google.common.base.Optional; public class GuavaTester { public static void main(String args[]){ GuavaTester guavaTester = new GuavaTester(); Integer invalidInput = null; Optional a = Optional.of(invalidInput); Optional b = Optional.of(new Integer(10)); System.out.println(guavaTester.sum(a,b)); } public Integer sum(Optional a, Optional b){ return a.get() + b.get(); } }
运行程序,看到结果如下。
Exception in thread "main" java.lang.NullPointerException at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:210) at com.google.common.base.Optional.of(Optional.java:85) at GuavaTester.main(GuavaTester.java:8)
让我们来了解上述程序的一些重要概念。
Optional - 实用类,使代码使用null能够正常。
Optional.of - 返回要用作参数Optional类的实例。检查传递的值是否为null。
Optional.get - 获取输入存储在Optional 类的值。
使用Optional类,可以方便地查看调用者方法来传递参数正确与否。
专题文章
更多- Guava Optional类详解-处理null值
- Guava Preconditions类-检查参数
- Guava Ordering类处理排序功能
- Guava Objects类详解
- Guava Range类-范围处理
- Guava Throwables类-异常处理
- Guava 集合处理-Multiset接口
- Guava集合处理- Bimap接口
- Guava集合工具类-Table接口映射处理
- Guava字符串连接-Joiner类
- Guava字符串分割处理-Spiltter类
- Guava CharMatcher类处理JAVA char类型值
- Guava ASCII字符转换 CaseFormat类
- Guava处理java byte类型工具类-Bytes类
- Guava 处理java short实用工具类-Shorts类
- Guava处理java int实用工具类-Ints类
- Guava Longs类-long的实用工具类
- Guava Floats类-float基本类型的实用工具类
- Guava Doubles类-double基本类型的实用工具类
- Guava Chars类-char类型的实用工具类
- Guava Booleans类-布尔型基本的实用工具类
- Guava IntMath类-提供整型的Math实用方法
- Guava LongMath类-long基础类型的Math实用方法
- Guava Multimap类-映射到多个值
- Guava cache缓存工具类