📅  最后修改于: 2020-11-16 06:49:29             🧑  作者: Mango
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传递给sum()方法。
程序运行时,将发生NullPointerException。
为了避免上述问题,在存在这种问题的每个地方都要进行无效检查。
让我们看看使用番石榴提供的Utility类Optional,以标准化的方式解决上述问题。
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)
让我们了解上述程序的重要概念。
可选-一个实用程序类,以使代码正确使用null。
Optional.of-返回Optional类的实例以用作参数。它检查传递的值,而不是'null'。
Optional.get-获取存储在Optional类中的输入的值。
使用Optional类,可以检查调用方方法是否传递了正确的参数。