Guava 介绍
精华
小牛编辑
371浏览
2023-03-14
什么是Java Guava
Guava 是一个开源的、基于 Java 的库,包含许多Google的核心库,这些库被用在他们的许多项目中。它促进了最佳编码实践并有助于减少编码错误。它提供了用于集合、缓存、原语支持、并发、通用注释、字符串处理、I/O 和验证的实用方法。
Java Guava的好处
-
标准化: 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 传递的参数。
-
caller 函数可能意外地将 null 传递给 sum() 方法。
-
程序运行时出现NullPointerException。
为了避免上述问题,在每个存在此类问题的地方都要做空检查。
下面我们来看看使用 Optional 这个 Guava 提供的 Utility 类,以标准化的方式解决上述问题。
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)
下面我们来了解一下上述程序的重要概念。
-
Optional : 一个实用程序类,使代码正确使用 null。
-
Optional.of : 它返回要用作参数的 Optional 类的实例。它检查传递的值,而不是“空”。
-
Optional.get : 它获取存储在 Optional 类中的输入值。
使用 Optional 类,您可以检查调用方方法是否传递了正确的参数。