Guava
Guava
@SmartSi
Stay Hungry, Stay Foolish
展开
-
[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原创 2016-03-04 21:30:28 · 1664 阅读 · 1 评论 -
[Guava源码日报](5)Optional分析
大多数情况下,开发人员使用null表明的是某种缺失情形:可能是已经有一个默认值,或没有值,或找不到值。例如,Map.get返回null就表示找不到给定键对应的值。Guava用Optional表示可能为null的T类型引用。一个Optional实例可能包含非null的引用(我们称之为引用存在),也可能什么也不包括(称之为引用缺失)。它从不说包含的是null值,而是用存在或缺失来表示。但Optiona原创 2017-05-02 11:58:41 · 1848 阅读 · 2 评论 -
[Guava源码日报](11)BiMap
BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构。通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是如果我们想根据value值查找key时,我们就需要额外编写一些代码来实现这个功能。BiMap为我们实现了这个功能。@Test public void test1(){ BiMap weekNameMap = Ha原创 2017-05-02 13:29:36 · 828 阅读 · 0 评论 -
[Guava源码日报](10)Iterables
1. 简介Iterables类包含了一系列的静态方法,来操作或返回Iterable对象。除非另外说明,每一个Iterables方法都会有一个Iterators的方法。2. 源码分析2.1 构造器Iterables类只提供了私有构造器,因此只能通过静态方法来使用Iterables类。public final class Iterables { private Iterables() {}2.2原创 2017-05-02 13:25:14 · 1251 阅读 · 0 评论 -
[Guava源码日报](9)Closeables
它的作用是收集可以关闭的资源并在合适的时候关闭它们。如下使用:Closer closer = Closer.create();try { InputStream in = closer.register(openInputStream()); OutputStream out = closer.register(openOutputStream()); // do stu原创 2017-05-02 13:18:22 · 932 阅读 · 0 评论 -
[Guava源码日报](8)ImmutableCollection
不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。1. UnmodifiableXXXJDK提供了UnmodifiableXXX(Collections.unmodifiable)用于生成不可变容器。不可变容器无法修改返回容器的内容。但是这里值的是无法通过set或add方法修改容器内的reference的指向,而不是禁止reference原创 2017-05-02 13:13:08 · 736 阅读 · 0 评论 -
[Guava源码日报](7)Throwables分析
有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在Error或RuntimeException被捕获的时候,你没想捕获它们,但是声明捕获Throwable和Exception的时候,也包括了了Error或RuntimeException。Guava提供了若干方法,来判断异常类型并且重新传播异常。例如:try { someMethodThatCouldThrowAnything();原创 2017-05-02 12:14:44 · 870 阅读 · 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原创 2017-05-02 12:09:35 · 1150 阅读 · 0 评论 -
[Guava源码日报(1)]Guava类库简介
1. 简介Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等。这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻原创 2016-03-04 21:27:25 · 1614 阅读 · 0 评论 -
[Guava源码日报](4)Preconditions
Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预 处理,能够确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在,接下来,我们就来学习使用Preconditions 进行代码校验。我们可以轻松的写出我们自己的先决条件,如下:public static Object chec原创 2017-05-02 11:48:19 · 747 阅读 · 0 评论 -
[Guava源码日报](3)Joiner分析
把任意的字符串,通过一些分隔符将它们连接起来是大多数程序员经常处理东西。以前的方式就是迭代,append等操作,使用Joiner可以更方便。我们先看一下以前的处理方式:// 通过分隔符将字符串链接在一起 public static String builder(ListString> list,String delimiter){ StringBuilder string原创 2017-05-02 11:01:43 · 1048 阅读 · 0 评论 -
[Guava]Throwables:简化异常和错误的传播与检查
1. 异常传播有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在 Error 或 RuntimeException 被捕获的时候,你没想捕获它们,但是声明捕获 Throwable 和 Exception 的时候,也包括了了 Error 或 RuntimeException。Guava 提供了若干方法,来判断异常类型并且重新传播异常。例如:try { someMethodThatCou转载 2017-08-14 20:28:30 · 1737 阅读 · 0 评论