当前位置: 首页 > 教程 > Guava >

Guava 介绍

精华
小牛编辑
362浏览
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 类,您可以检查调用方方法是否传递了正确的参数。