Google Guava中的前置条件
前置条件:让方法调用的前置条件判断更简单。
Guava在Preconditions类中提供了若干前置条件判断的实用方法,我们建议[在Eclipse中静态导入这些方法]每个方法都有三个变种:
- checkArgument()方法,用来检查传入的值是否为true。
boolean flag=false;
checkArgument(flag);
运行结果:
Exception in thread "main" java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:108)
at guavaDemo.Test02.main(Test02.java:9)
当然此方法有很多重载方法,这里我们介绍一个演示一下:
int max=1,min=2;//我们期待max是大于min的
checkArgument(max>min,"max的值小于min的值");
运行结果:
Exception in thread "main" java.lang.IllegalArgumentException: max的值小于min的值
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
at guavaDemo.Test02.main(Test02.java:12)
- checkNotNull(T)方法用来检查T的值是否为null。
String str=null;
checkNotNull(str);
运行结果:
Exception in thread "main" java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770)
at guavaDemo.Test02.main(Test02.java:15)
- checkState(boolean) 检查对象的状态。
String str=null;
checkState(str.isEmpty());
运行结果:
Exception in thread "main" java.lang.NullPointerException
at guavaDemo.Test02.main(Test02.java:17)
- checkElementIndex(int index, int size),检查列表,字符串,或者数组的索引值是否合法。
int[] arr=new int[5];
checkElementIndex(5, arr.length);
运行结果:
Exception in thread "main" java.lang.IndexOutOfBoundsException: index (5) must be less than size (5)
at com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:1177)
at com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:1159)
at guavaDemo.Test02.main(Test02.java:20)
- checkPositionIndex(int index, int size),检查该位置是否有效,下面的例子中使用的仍然是上例中定义的数组。
checkPositionIndex(5, arr.length);5位置存在,运行正常。
checkPositionIndex(6, arr.length);6位置不存在,抛出异常。
Exception in thread "main" java.lang.IndexOutOfBoundsException: index (6) must not be greater than size (5)
at com.google.common.base.Preconditions.checkPositionIndex(Preconditions.java:1222)
at com.google.common.base.Preconditions.checkPositionIndex(Preconditions.java:1204)
at guavaDemo.Test02.main(Test02.java:22)
- checkPositionIndexes(int start, int end, int size),检查某个范围是否有效。
checkPositionIndexes(3, 6, arr.length);
运行结果:
Exception in thread "main" java.lang.IndexOutOfBoundsException: index (6) must not be greater than size (5)
at com.google.common.base.Preconditions.checkPositionIndex(Preconditions.java:1222)
at com.google.common.base.Preconditions.checkPositionIndex(Preconditions.java:1204)
at guavaDemo.Test02.main(Test02.java:22)
上面就是guava中为我们提供的一些最基本的前置条件检查方法。
接下来我们看看guava给我提供的equals方法和hashcode方法,代码比较简单这里就不详细说明了。
System.out.println(Objects.equal(null, 'a'));
System.out.println(Objects.equal(null, null));
System.out.println(Objects.equal('a', null));
System.out.println(Objects.equal('a','a'));
String str1="zhaotong1";
System.out.println(Objects.hashCode(str1));
执行结果:
false
true
false
true
-1420540160
Google Guava中的前置条件的更多相关文章
- Google guava 中的Monitor
synchronized 自从Java提供了多线程编程,我们经常需要处理这样的情况:在特定的时间,我们需要限制访问,确保只有一个线程访问我们的代码.Java提供了同步关键字synchronized来实 ...
- google guava cache缓存基本使用讲解
代码地址:https://github.com/vikde/demo-guava-cache 一.简介 guava cache是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存 ...
- Java内存缓存-通过Google Guava创建缓存
谷歌Guava缓存 Guava介绍 Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中.实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问. Guava ...
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...
- [Google Guava] 强大的集合工具类:java.util.Collections中未包含的集合工具
转载的,有问题请联系我 原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collecti ...
- [转载]Google Guava官方教程(中文版)
原文链接 译文链接 译者: 沈义扬,罗立树,何一昕,武祖 校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] ...
- Google Guava官方教程(中文版)
Google Guava官方教程(中文版) 原文链接 译文链接 译者: 沈义扬,罗立树,何一昕,武祖 校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库, ...
- com.google.guava 包解析 ——Google Guava官方教程(中文版)
全网址 http://ifeve.com/google-guava/ 竹子博客: http://www.cnblogs.com/peida/archive/2013/06/08/ ...
- 初探Google Guava
Guava地址:https://github.com/google/guava 第一次接触我是在16年春github上,当时在找单机查缓存方法,google guava当初取名是因为JAVA的类库不好 ...
随机推荐
- Mybatis 自动生成代码,数据库postgresql
最近做了一个项目,使用Mybatis自动生成代码,下面做一下总结,被以后参考: 一.提前准备: 1.工具类:mybatis-generator-core-1.3.2.jar 2.postgresql驱 ...
- SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis
一:DAO实体编码 1:首先,在src目录下,新建org.myseckill.entity包,用于存放实体类: 2:实体类设计 根据前面创建的数据库表以及映射关系,创建实体类. 表一:秒杀商品表 对应 ...
- lxml包引入错误
在使用第三方包lxml引入etree模块时报错: >>> from lxml import etree Traceback (most recent call last): File ...
- XMLHttpRequest HTTP请求的返回码为0 http status = 0
由于用户在http返回前关闭/取消,或者防火墙等原因,会造成http请求没有status信息.w3c有相应的说明:http://www.w3.org/TR/XMLHttpRequest/#the-st ...
- Android实训案例(七)——四大组件之中的一个Service初步了解,实现通话录音功能,抽调接口
Service Service的奇妙之处.在于他不须要界面,一切的操作都在后台操作,所以非常多全局性(手机助手,语音助手)之类的应用非常长须要这个.我们今天也来玩玩 我们新建一个project--Se ...
- 一张图弄明确开源协议-GPL、BSD、MIT、Mozilla、Apache和LGPL 之间的差别
导读 在开源软件中常常看到各种协议说明.GPL.BSD.MIT.Mozilla.Apache和LGPL. - 这些协议之间的有什么差别 - 怎样选择合适的开源协议 请看下文,特作记录一篇,以供兴许查看 ...
- java 中文及特殊字符校验
java 中文及特殊字符校验 CreateTime--2017年8月25日16:54:50 Author:Marydon 一.参考链接 http://blog.csdn.net/imduan/ar ...
- HDU 4472 Count(数学 递归)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4472 Problem Description Prof. Tigris is the head of ...
- 完美解决office2013 错误1402
遇到1402问题 按照网络上的帖子都无法解决,老提示无权限更改,原来只是少了一个步骤而已!经本人多次试验,已经完美解决,现在上图! 步骤 肯定是得先出现错误,找到注册表所在项! 这个就不赘述,通过 ...
- Ubuntu18.04使用f3probe检测U盘实际容量
项目主页 https://fight-flash-fraud.readthedocs.io/ 使用f3probe 能快速检测出被测U盘的实际容量, 命令 $ sudo f3probe --destru ...