文档章节

Google Guava中的前置条件

o
 osc_mervd488
发布于 2018/04/23 17:12
字数 552
阅读 6
收藏 0

精选30+云产品,助力企业轻松上云!>>>

前置条件:让方法调用的前置条件判断更简单。
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
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Hacker News 简讯 2020-07-10

更新时间: 2020-07-10 01:15 US Supreme Court deems half of Oklahoma a Native American Reservation - (reuters.com) 美国最高法院认为俄克拉荷马州的一半是印第安人保留地 得分:131 | 评...

FalconChen
21分钟前
12
0
OSChina 周五乱弹 —— 求求你吃了我吧,不要再玩弄食物的感情了

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :张喆的单曲《陷阱 》 这首歌已经在网易找不到原唱了,不知道被哪家买了版权。#今日歌曲推荐# 《陷阱 》- 张喆 手机党少年们想听歌...

小小编辑
32分钟前
18
1
清华陈文光教授:AI 超算基准测试的最新探索和实践。

道翰天琼认知智能平台为您揭秘新一代人工智能。 无规矩不成方圆。放在超级计算机的研发领域,没有一个大家普遍接受的算力评测指标,便难以推动超算迅猛发展。 而现在伴随着人工智能的发展,大...

jackli2020
46分钟前
7
0
@RequestMapping, consumes 提交简单有意思的测试

getParm @GetMapping("getParm")public Result getParm(String id){ System.out.println(); return ResultFactory.success(id);} 等同于 == bodyParm @PostMapping("bodyParm......

莫库什勒
57分钟前
25
0
63. Unique Paths II

题目: 63. Unique Paths II A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any p......

JiaMing
今天
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部