[Guava]Throwables:简化异常和错误的传播与检查

1. 异常传播有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在 Error 或 RuntimeException 被捕获的时候,你没想捕获它们,但是声明捕获 Throwable 和 Exception 的时候,也包括了了 Error 或 RuntimeException。Guava 提供了若干方法,来判断异常类型并且重新传播异常。例如:try { someMethodThatCou...
阅读(152) 评论(0)

[Guava源码日报](11)BiMap

BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构。通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是如果我们想根据value值查找key时,我们就需要额外编写一些代码来实现这个功能。BiMap为我们实现了这个功能。@Test public void test1(){ BiMap weekNameMap = Ha...
阅读(230) 评论(0)

[Guava源码日报](10)Iterables

1. 简介Iterables类包含了一系列的静态方法,来操作或返回Iterable对象。除非另外说明,每一个Iterables方法都会有一个Iterators的方法。2. 源码分析2.1 构造器Iterables类只提供了私有构造器,因此只能通过静态方法来使用Iterables类。public final class Iterables { private Iterables() {}2.2 ...
阅读(315) 评论(0)

[Guava源码日报](9)Closeables

它的作用是收集可以关闭的资源并在合适的时候关闭它们。如下使用:Closer closer = Closer.create(); try { InputStream in = closer.register(openInputStream()); OutputStream out = closer.register(openOutputStream()); // do stu...
阅读(266) 评论(0)

[Guava源码日报](8)ImmutableCollection

不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。1. UnmodifiableXXXJDK提供了UnmodifiableXXX(Collections.unmodifiable)用于生成不可变容器。不可变容器无法修改返回容器的内容。但是这里值的是无法通过set或add方法修改容器内的reference的指向,而不是禁止reference...
阅读(175) 评论(0)

[Guava源码日报](7)Throwables分析

有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在Error或RuntimeException被捕获的时候,你没想捕获它们,但是声明捕获Throwable和Exception的时候,也包括了了Error或RuntimeException。Guava提供了若干方法,来判断异常类型并且重新传播异常。例如:try { someMethodThatCouldThrowAnything(); ...
阅读(249) 评论(0)

[Guava源码分析](6)Objects分析

1. 私有构造器private Objects() {}2. 判断两个可能为null的对象是否相等public static boolean equal(@Nullable Object a, @Nullable Object b) { return a == b || (a != null && a.equals(b)); }当一个对象中的字段可以为null时,实现Obj...
阅读(245) 评论(0)

[Guava源码日报](5)Optional分析

大多数情况下,开发人员使用null表明的是某种缺失情形:可能是已经有一个默认值,或没有值,或找不到值。例如,Map.get返回null就表示找不到给定键对应的值。Guava用Optional表示可能为null的T类型引用。一个Optional实例可能包含非null的引用(我们称之为引用存在),也可能什么也不包括(称之为引用缺失)。它从不说包含的是null值,而是用存在或缺失来表示。但Optiona...
阅读(386) 评论(2)

[Guava源码日报](4)Preconditions

Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预 处理,能够确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在,接下来,我们就来学习使用Preconditions 进行代码校验。我们可以轻松的写出我们自己的先决条件,如下:public static Object chec...
阅读(208) 评论(0)

[Guava源码日报](3)Joiner分析

把任意的字符串,通过一些分隔符将它们连接起来是大多数程序员经常处理东西。以前的方式就是迭代,append等操作,使用Joiner可以更方便。我们先看一下以前的处理方式:// 通过分隔符将字符串链接在一起 public static String builder(ListString> list,String delimiter){ StringBuilder string...
阅读(233) 评论(0)

[Guava源码日报](2)Strings分析

我们先看大体看一下Strings的源码: //// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package com.google.common.base;import com.google.common.annotations.GwtComp...
阅读(1011) 评论(0)

[Guava源码日报(1)]Guava类库简介

1. 简介 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等。这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻...
阅读(807) 评论(0)
    个人资料
    • 访问:1240461次
    • 积分:19943
    • 等级:
    • 排名:第437名
    • 原创:621篇
    • 转载:132篇
    • 译文:50篇
    • 评论:173条
    博客专栏
    文章分类
    最新评论