Guava教程

Guava 是什么?

Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。

Guava的好处

  • 标准化 - Guava库是由谷歌托管。
  • 高效 - 可靠,快速和有效的扩展JAVA标准库
  • 优化 -Guava库经过高度的优化。

函数式编程 -增加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检查要在每个这样存在问题地方。

让我们来看看使用Optional,Guava 提供实用工具类来标准化方式解决上述问题。

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类,可以方便地查看调用者方法来传递参数正确与否。


猿狮妹
2022-08-04
Guava教程 在线教程
热门教程
1 Guava教程 Guava是一种基于开源的Java库,谷歌很多项目使用它的很多核心库。这个库是为了方便编码,并减少编码错误。
2 Guava Booleans类 Booleans是布尔型基本的实用工具类。 类声明 以下是com.google.common.primitives.Booleans类的声明: @GwtCompatible ( emulated = true ) public final class Booleans extends Object 方法 S.N. 方法及说明 1 static ListB
3 Guava环境设置 Guava本地环境设置 这部分指导如何下载和设置Java在机器上。请按照以下步骤来设置环境。 Java SE免费提供链接: 下载Java 。所以,根据操作系统下载对应版本。 按照说明下载java和运行
4 Guava Optional类 Optional用于包含非空对象的不可变对象。 Optional对象,用于不存在值表示null。这个类有各种实用的方法,以方便代码来处理为可用或不可用,而不是检查null值。 类声明 以下是com.googl
5 Guava Multimap类 多重映射接口扩展映射,使得其键一次可被映射到多个值。 接口声明 以下是com.google.common.collect.MultimapK,V接口的声明: @GwtCompatiblepublic interface MultimapK,V 接口方法 S.N. 方法及说明 1 Ma
6 Guava CharMatcher类 CharMatcher提供了各种方法来处理各种JAVA char类型值。 类声明 以下是com.google.common.base.CharMatcher类的声明: @GwtCompatible ( emulated = true ) public final class CharMatcher extends Object 字体 S.N. 字段及说
7 Guava Bimap接口 BiMap 是一种特殊的映射其保持映射,同时确保没有重复的值是存在于该映射和一个值可以安全地用于获取键背面的倒数映射。 接口声明 以下是com.google.common.collect.BimapK,V接口的声明:
8 Guava Preconditions类 Preconditions提供静态方法来检查方法或构造函数,被调用是否给定适当的参数。它检查的先决条件。其方法失败抛出IllegalArgumentException。 类声明 以下是com.google.common.base.Preconditions类的声
9 Guava Ordering类 Ordering(排序)可以被看作是一个丰富的比较具有增强功能的链接,多个实用方法,多类型排序功能等。 类声明 以下是com.google.common.collect.OrderingT类的声明: @GwtCompatible public abstract c
10 Guava Objects类 Objects类提供适用于所有对象,如equals, hashCode等辅助函数 类声明 以下是com.google.common.base.Objects类的声明: @GwtCompatiblepublic final class Objects extends Object Class methods S.N. 方法及说明 1 static
  • Copyright © 2021 猿狮院, All rights reserved.