📜  Guava-概述

📅  最后修改于: 2020-11-16 06:49:29             🧑  作者: Mango


什么是番石榴?

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。

为了避免上述问题,在存在这种问题的每个地方都要进行无效检查。

让我们看看使用番石榴提供的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 a =  Optional.of(invalidInput);
      Optional b =  Optional.of(new Integer(10));
      System.out.println(guavaTester.sum(a,b));      
   }

   public Integer sum(Optional a, Optional 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类,可以检查调用方方法是否传递了正确的参数。