- Guava 教程
- Guava - 首页
- Guava - 概述
- Guava - 环境设置
- Guava - Optional 类
- Guava - Preconditions 类
- Guava - Ordering 类
- Guava - Objects 类
- Guava - Range 类
- Guava - Throwables 类
- Guava - 集合工具类
- Guava - 缓存工具类
- Guava - 字符串工具类
- Guava - 原语工具类
- Guava - 数学工具类
- Guava 有用资源
- Guava - 快速指南
- Guava - 有用资源
- Guava - 讨论
Guava - 概述
什么是 Guava?
Guava 是一个开源的、基于 Java 的库,包含 Google 的许多核心库,这些库被用于他们的许多项目中。它促进了最佳编码实践,并有助于减少编码错误。它提供了用于集合、缓存、基本类型支持、并发、常用注解、字符串处理、I/O 和验证的实用程序方法。
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 传递的参数。
调用函数也不担心意外地将 null 传递给 sum() 方法。
程序运行时,会发生 NullPointerException。
为了避免上述问题,需要在存在此类问题的每个地方进行 null 检查。
让我们看看如何使用 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 - 一个实用程序类,用于使代码正确使用 null。
Optional.of - 它返回 Optional 类的实例,用作参数。它检查传递的值是否为 'null'。
Optional.get - 它获取存储在 Optional 类中的输入值。
使用 Optional 类,您可以检查调用方法是否传递了正确的参数。
广告