前置条件:让方法调用的前置条件判断更简单。
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中的前置条件的更多相关文章

  1. Google guava 中的Monitor

    synchronized 自从Java提供了多线程编程,我们经常需要处理这样的情况:在特定的时间,我们需要限制访问,确保只有一个线程访问我们的代码.Java提供了同步关键字synchronized来实 ...

  2. google guava cache缓存基本使用讲解

    代码地址:https://github.com/vikde/demo-guava-cache 一.简介 guava cache是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存 ...

  3. Java内存缓存-通过Google Guava创建缓存

    谷歌Guava缓存 Guava介绍 Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中.实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问. Guava ...

  4. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  5. [Google Guava] 强大的集合工具类:java.util.Collections中未包含的集合工具

    转载的,有问题请联系我 原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collecti ...

  6. [转载]Google Guava官方教程(中文版)

      原文链接  译文链接 译者: 沈义扬,罗立树,何一昕,武祖  校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] ...

  7. Google Guava官方教程(中文版)

    Google Guava官方教程(中文版) 原文链接  译文链接 译者: 沈义扬,罗立树,何一昕,武祖  校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库, ...

  8. com.google.guava 包解析 ——Google Guava官方教程(中文版)

    全网址           http://ifeve.com/google-guava/ 竹子博客:  http://www.cnblogs.com/peida/archive/2013/06/08/ ...

  9. 初探Google Guava

    Guava地址:https://github.com/google/guava 第一次接触我是在16年春github上,当时在找单机查缓存方法,google guava当初取名是因为JAVA的类库不好 ...

随机推荐

  1. 017-通过govendor管理依赖包

    1:安装 go get -u github.com/kardianos/govendor 2:配置环境变量 需要把 $GOPATH/bin/ 加到 PATH 中 D:\my_workspace\go_ ...

  2. Mybatis 自动生成代码,数据库postgresql

    最近做了一个项目,使用Mybatis自动生成代码,下面做一下总结,被以后参考: 一.提前准备: 1.工具类:mybatis-generator-core-1.3.2.jar 2.postgresql驱 ...

  3. HTTP长连接与短链接

    想要充分了解HTTP长连接,需要首先知道一些基本概念: TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这 ...

  4. iPad Air 2全然评測:可怕的三核CPU、六核GPU

    在了解了三核心A8X的基本情况后.我们再来通过測试数据,全面地了解一下iPad Air 2的性能表现,包含CPU.GPU.存储.电池.屏幕.摄像头.导航等等. [CPU性能測试:三核太可怕了] 移动处 ...

  5. SpringMVC学习笔记八:文件上传下载(转)

    转自:http://www.cnblogs.com/WJ-163/p/6269409.html 一.关键步骤 ①引入核心JAR文件 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上 ...

  6. JQuery EasyUI学习笔记

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6690888.html  简介与准备 jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用 ...

  7. gzip:stdin:not in gzip format的解决办法

    执行解压命令,在解压.gz或者.bz2格式的文件的文件的时候可能会出现这样的错误提示 tar -zxvf rlwrap-0.30.tar.gz 报错如下 gzip: stdin: not in gzi ...

  8. .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载

    223本电子书籍,囊括了.NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Shell/A ...

  9. 【Shell】获取设置日期和延时

    1.读取日期 Linux:~ # date Mon Dec 17 03:16:53 EST 2018 2.格式日期并打印 Linux:~ # date "+%d %B %Y" 17 ...

  10. 使用Cookie进行会话管理

    javaweb学习总结(十一)——使用Cookie进行会话管理 一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. ...