目录

Guava - 概述

什么是Guava?

Guava是一个基于Java的开源库,包含许多Google核心库,这些库正在许多项目中使用。 它有助于最佳编码实践,并有助于减少编码错误。 它为集合,缓存,基元支持,并发,通用注释,字符串处理,I/O和验证提供实用程序方法。

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()不会处理任何要传递为null的参数。

  • 调用函数也不担心无意中将null传递给sum()方法。

  • 程序运行时,会发生NullPointerException。

为了避免上述问题,应在存在这些问题的每个地方进行空检查。

让我们看看使用Prote,一个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类的实例,用作参数。 它检查传递的值,而不是'null'。

  • Optional.get - 它获取Optional类中存储的输入值。

使用Optional类,可以检查调用方法是否正在传递正确的参数。

↑回到顶部↑
WIKI教程 @2018