- Guava Tutorial
- Guava - Home
- Guava - Overview
- Guava - Environment Setup
- Guava - Optional Class
- Guava - Preconditions Class
- Guava - Ordering Class
- Guava - Objects Class
- Guava - Range Class
- Guava - Throwables Class
- Guava - Collections Utilities
- Guava - Caching Utilities
- Guava - String Utilities
- Guava - Primitive Utilities
- Guava - Math Utilities
- Guava Useful Resources
- Guava - Quick Guide
- Guava - Useful Resources
- Guava - Discussion
番石榴 - 概述
什么是番石榴?
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。
为了避免上述问题的发生,需要对每一个存在问题的地方进行无效检查。
我们来看看如何使用Guava提供的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<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类,您可以检查调用者方法是否传递了正确的参数。