Google Guava 学习记录《二》 Precondition

1       int i = 4;  
2          int j = 5;
3          Preconditions.checkArgument(i>j,"i should bigger than j, but i is %s and j is %s",i,j);
Exception in thread "main" java.lang.IllegalArgumentException: i should bigger than j, but i is 4 and j is 5
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
    at google.guava.GuavaDemo.main(GuavaDemo.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

先放上最常用的checkArgument,可以看到当没有满足表达式时,输出的错误消息可以自己定义,而且非常清晰。

以下是对3个参数的解释:

  • No extra arguments. Any exceptions are thrown without error messages. 不要错误消息
  • An extra Object argument. Any exception is thrown with the error message object.toString(). 只要错误消息
  • An extra String argument, with an arbitrary number of additional Object arguments. This behaves something like printf, but for GWT compatibility and efficiency, it only allows %s indicators  加上变量,然后出错时查看是不是数值确实有错误

其他的应该用的很少,在项目中ack发现只有用到过checkArgument了。。就不做解释了

checkArgument(boolean) Checks that the boolean is true. Use for validating arguments to methods. IllegalArgumentException
checkNotNull(T) Checks that the value is not null. Returns the value directly, so you can use checkNotNull(value) inline. NullPointerException
checkState(boolean) Checks some state of the object, not dependent on the method arguments. For example, an Iteratormight use this to check that next has been called before any call to remove. IllegalStateException
checkElementIndex(int index, int size) Checks that index is a valid element index into a list, string, or array with the specified size. An element index may range from 0 inclusive to size exclusive. You don‘t pass the list, string, or array directly; you just pass its size.
Returns index.
IndexOutOfBoundsException
checkPositionIndex(int index, int size) Checks that index is a valid position index into a list, string, or array with the specified size. A position index may range from 0 inclusive to size inclusive. You don‘t pass the list, string, or array directly; you just pass its size.
Returns index.
IndexOutOfBoundsException
checkPositionIndexes(int start, int end, int size)
时间: 2024-10-26 00:59:10

Google Guava 学习记录《二》 Precondition的相关文章

Google Guava 学习记录《一》

Guava 在Google code 上地址:https://code.google.com/p/guava-libraries/ 首先为什么要学习这个库,在实习的时候看大神的代码很简洁,很多地方将一些琐碎凌乱的代码轻松解决,所以抱着试试看的心态搞搞吧. 第一部分:basic utilities null 问题的处理 理解Optional<T> ,首先要理解为什么出现这个.在Java中null其实代表的意思在不同的content下是不同的,比如一个值可能是null或者是真的不存在.在Map.g

Google Guava 学习记录《4》Immutable Set

Immutable objects have many advantages, including: Safe for use by untrusted libraries. Thread-safe: can be used by many threads with no risk of race conditions. Doesn't need to support mutation, and can make time and space savings with that assumpti

Google Guava 学习记录《Three》 Ordering

Ordering我看了好多遍中文文档,加一些实例终于算是搞清楚怎么回事了. 他是干什么的? 就像他名字一样,用来ordering 排序的.. 主要有两种方法. 1 用它的静态方法排序. 比如 Ordering.natural();    对可排序类型做自然排序,如数字按大小,日期按先后.  natual()的官方解释翻译. 2 用自己定义的Ordering 比如你要根据字符串的长度排序. public void orderBasedOnLength(){ Ordering<String> by

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Spring Boot学习记录(二)--thymeleaf模板

Spring Boot学习记录(二)–thymeleaf模板 标签(空格分隔): spring-boot 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好的和spring集成.下面开始学习. 1.引入依赖 maven中直接引入 <dependency> <groupId>org.springframework.boot</gr

Google Guava学习笔记——简介

Google Guava是什么东西?首先要追溯到2007年的“Google Collections Library”项目,它提供对Java 集合操作的工具类.后来Guava被进化为Java程序员开发必备的工具.Guava可以对字符串,集合,并发,I/O,反射进行操作. 在软件开发过程中,我们自认为可以什么都能做,我们本能的去写自己的类库来处理一些日常的问题.当然,我们认为自己写的代码是坚不可摧的,并且是经过单元测试的.实际上,我们没有我们认为的那么聪明,换句话说,它不在于你有多聪明,而是在于编写

netty 学习记录二

netty 最新版本是netty-5.0.0.Alpha1,去年10月份发布的,至今没有发新版本,估计这个版本还是比较稳定. 整包下载,里面包含一个 netty-example-5.0.0.Alpha1-sources.jar文件,提供了比较丰富的example例子,多看几遍还是非常有收获的,这里记录下. 先来看下channelHandler的两个不同继承: 方式一:直接从ChannelHandlerAdapter类里继承,读取操作从channelRead方法里执行 @Sharable publ

[Google Guava]学习--新集合类型Multimap

每个有经验的Java程序员都在某处实现过Map<K, List<V>>或Map<K, Set<V>>,并且要忍受这个结构的笨拙. 假如目前有个需求是给两个年级添加5个学生,并且统计出一年级学生的信息: public class MultimapTest { class Student { String name; int age; } private static final String CLASS_NAME_1 = "一年级"; pr

Mybatis学习记录(二)--Mybatis开发DAO方式

mybatis开发dao的方法通常用两种,一种是传统DAO的方法,一种是基于mapper代理的方法,下面学习这两种开发模式. 写dao之前应该要对SqlSession有一个更加细致的了解 一.mybatis的SqlSession使用范围 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产