杂项-Maven-guava:guava
2024-09-03 21:43:08
ylbtech-杂项-Maven-guava:guava |
Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。
1.返回顶部 |
1、
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)
Java
让我们来了解上述程序的一些重要概念。
Optional - 实用类,使代码使用null能够正常。
Optional.of - 返回要用作参数Optional类的实例。检查传递的值是否为null。
Optional.get - 获取输入存储在Optional 类的值。
使用Optional类,可以方便地查看调用者方法来传递参数正确与否。
2、
2.返回顶部 |
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
1、
2、中文教程
3、
6.返回顶部 |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
最新文章
- scikit-learn 线性回归算法库小结
- Java Gradle入门指南之内建与定制任务类(buildSrc、Groovy等)
- java的nio之:java的nio系列教程之serverSocketChannel
- UITextfiled子视图被剪切
- HDU1465+递推
- Android(java)学习笔记127:Android Studio新建工程中的build.gradle、settings.gradle
- MySQL存储过程学习笔记
- ACM-计算几何之Quoit Design——hdu1007 zoj2107
- 导入 theano 失败。“cannot import name gof”
- Canvas 旋转风车绘制
- 关于修改了db2 instance下面文件夹权限导致的不可连接
- 【一天一道LeetCode】#95. Unique Binary Search Trees II
- Vue2 学习笔记3
- MySQL 优化集锦
- python 全栈开发,Day6(is,小数据池,编码转换)
- 安装Ubuntu16.04与windows10双系统后,如何修改启动默认设置
- 批处理REG学习
- C# Bulk Operations(转)
- C博客作业03—函数
- MAC node + git + bower 简单安装
热门文章
- wireshark 分析 TCP 请求(转)
- K-mean matlab 实现代码
- 日文NLP分词系统
- springBoot项目mybatis中加入缓存
- Superset安装出错 sqlalchemy.exc.InvalidRequestError: Can&#39;t determine which FROM clause to join from, ...
- Java——package和import关键字
- Oracle实现行转列+Mybatis
- storm集群的安装
- NX二次开发-UFUN遍历函数UF_OBJ_cycle_all
- NX二次开发-获得制图中对象的坐标点UF_DRF_ask_origin