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 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)

让我们来了解上述程序的一些重要概念。

Optional - 实用类,使代码使用null能够正常。

Optional.of - 返回要用作参数Optional类的实例。检查传递的值是否为null。

Optional.get - 获取输入存储在Optional 类的值。

使用Optional类,可以方便地查看调用者方法来传递参数正确与否。

转载自并发编程网-ifeve.com

java什么是guava_Guava教程相关推荐

  1. Java并发编程实战_一线大厂架构师整理:java并发编程实践教程

    并发编程是Java语言的重要特性之一, 在Java平台上提供了许多基本的并发功能来辅助开发多线程应用程序.然而,这些相对底层的并发功能与上层应用程序的并发语义之间并不存在一种简单而直观的映射关系.因此 ...

  2. java程序设计与实践教程 王薇 doc_Java程序设计与实践教程 王薇主编 答案

    Java程序设计与实践教程 王薇 主编 董迎红 副主编 课后习题 答案 第1章 JAVA简介 一.判断题 1.√ 2.√ 3. 4. 5. 6.√ 7.√ 8.√ 9. 10. 二.填空题 1.App ...

  3. java语言中json转换,JSON字符串和JAVA语言对象的相互转换教程

    本文主要向大家介绍了JSON字符串和JAVA语言对象的相互转换教程,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一:字符串转换为对象:使用JSON.parse()方法 var st ...

  4. Java中的JDBC教程

    Java中的JDBC教程 欢迎使用JDBC教程.Java DataBase Connectivity(JDBC)是企业应用程序中使用最广泛的API之一.这是因为大多数应用程序使用某种数据库连接.我最近 ...

  5. Java Media Framework 基础教程

    Java Media Framework 基础教程 作者:Eric Olson     来源:ibm 摘要: 很少发现有关于jmf方面的中文资料,这是在IBM上面找的一本书,可作为jmf的入门学习,业 ...

  6. Java Servlet 和JSP教程(2)

    Java Servlet 和JSP教程(2) 2 安装 2.1 安装Servlet和JSP开发工具 要学习Servlet和JSP开发,首先你必须准备一个符合Java Servlet2.1/2.2和Ja ...

  7. Java 开发环境配置教程

    Java 开发环境配置教程 前言: 想要在自己电脑上运行Java程序,就必须配置响应的Java运行环境,接下来就为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装 ...

  8. 《Java程序设计与数据结构教程(第二版)》学习指导

    <Java程序设计与数据结构教程(第二版)>学习指导 目录 图书简况 学习指导 第一章 绪论 第二章 数据和表达式 第三章 使用类和对象 第四章 条件和循环 第五章 编写类 第六章 图形用 ...

  9. Java配置环境变量教程,Java配置环境变量的作用

    配置Java环境变量的作用 1:可以在cmd窗口(dos命令)运行和编译Java代码, 2:在任何路径下都能运行jdk,不配置环境变量的话,只能在jdk的安装路径下运行,换到其他路径的 话系统会提示找 ...

最新文章

  1. 独家 | 用Python Featuretools库实现自动化特征工程(附链接)
  2. Unity手游:自动寻路Navmesh 跳跃 攀爬 斜坡
  3. C++在数字向量中找到出现奇数次的数字的算法实现(附完整源码)
  4. Python基础概念_11_标准库
  5. elasticsearch-1.3.0 之索引代码粗略梳理
  6. JVM优化系列-对象内存分配和回收的细节
  7. Nowcoder 提高组练习赛-R2
  8. 小程序坑 redirectTo 计时器 setInterval clearInterval
  9. c语言人物游戏代码大全,(c语言)游戏中由人物各种信息组成的结构体
  10. Serdes 原理及调试学习
  11. 利用Python爬虫和Tableau分析链家网二手房信息
  12. 如何使用加密狗加密自己程序
  13. MongoDB分组查询数据库sql
  14. 解决微博SDK接入全平台支持
  15. python tableau工作流_【干货】五分钟Get到Tableau五个实用小技巧
  16. Http 调用netty 服务,服务调用客户端,伪同步响应.ProtoBuf 解决粘包,半包问题.
  17. 这个5G网优工程师也太牛了!手机丢了,自己找回来了!
  18. 解决SupportAssist提示意外错误的问题
  19. android仿36氪轮播,仿36氪(附源代码)
  20. jQuery基础----10jQuery效果-回调

热门文章

  1. ios短信验证码自动填充两次,且输入框的值为空。
  2. [Eclipse Android]已解决:Graphical Layout不能使用,并出现提示This version of the rendering library is more recent
  3. python选课系统
  4. IO-用 fgets和fputs函数 拷贝文件
  5. special judge
  6. SwiftUI之深入解析三角函数和三角公式的应用
  7. echarts x轴换行
  8. TCP UDP面向连接是什么意思,面向无连接是什么意思
  9. CNN+LSTM多通道特征组合模型
  10. 后台管理系统2——数据权限控制