Guava是一个基于Java的开源库,包含许多Google核心库,这些库正在许多项目中使用.它有助于最佳编码实践,并有助于减少编码错误.它为集合,缓存,基元支持,并发,通用注释,字符串处理,I/O和验证提供实用程序方法.
标准化 : Guava图书馆由Google管理.
高效 : 它是Java标准库的可靠,快速和有效的扩展.
优化 : 该库经过高度优化.
功能编程 : 它为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传递给总和()方法意外.
程序运行时,会发生NullPointerException.
为了避免上述问题,应在存在此类问题的每个地方进行空检查.
让我们看一下使用的可选项,提供番石榴实用工具类,以标准化方式解决上述问题.
import com.google.common.base.Optional; public class GuavaTester { public static void main(String args[]) { GuavaTester guavaTester = new GuavaTester(); Integer invalidInput = null; Optional<Integer> a = Optional.of(invalidInput); Optional<Integer> b = Optional.of(new Integer(10)); System.out.println(guavaTester.sum(a,b)); } public Integer sum(Optional<Integer> a, Optional<Integer> 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)
让我们理解上述计划的重要概念.
可选 : 一个实用程序类,用于使代码正确使用null.
Optional.of : 它返回Optional类的实例以用作参数.它会检查传递的值,而不是'null'.
Optional.get : 它获取存储在Optional类中的输入值.
使用Optional类,可以检查调用者方法是否正在传递是否适当参数.