Guava 简明教程
Guava - Overview
What is Guava?
Guava 是一个基于 Java 的开源库,封装了许多 Google 核心库,广泛用于 Google 旗下的许多项目。它促进了最佳编码实践,有助于减少编码错误。它提供了用于集合、缓存、原生支持、并发、常见注释、字符串处理、I/O 和验证的实用方法。
Benefits of Guava
-
Standardized − Guava 库由 Google 管理。
-
Efficient − 它是对 Java 标准库的一个可靠、快速且高效的扩展。
-
Optimized − 该库经过高度优化。
-
Functional Programming − 它为 Java 添加了功能处理能力。
-
Utilities − 它提供了许多实用类,这些类在编程应用程序开发中经常需要。
-
Validation − 它提供了一个标准的故障保护验证机制。
-
Best Practices − 它强调最佳实践。
考虑以下代码片段。
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() 并未对要作为空值传递的任何参数进行处理。
-
call 函数也不担心意外地将一个空值传递给 sum() 方法。
-
程序运行时,会发生 NullPointerException。
为了避免上述问题,必须在存在此类问题的每一个地方进行空值检查。
让我们看看如何使用 Guava 提供的实用程序类 Optional 来以标准化的方式解决上述问题。
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 − 一个实用程序类,用于让代码正确使用空值。
-
Optional.of − 它返回 Optional 类的实例,以用作参数。它检查传递的值,以判断它是否是“null”。
-
Optional.get − 它获取存储在 Optional 类中的输入值。
使用 Optional 类,您可以检查调用方法是否传递了适当的参数。