guava常用
教程:
http://www.yiibai.com/guava/
http://ifeve.com/google-guava/
optional
注意java8同样提供optional,区分
意义:
- 使用Optional除了赋予null语义,增加了可读性,最大的优点在于它是一种傻瓜式的防护。
- Optional 迫使你积极思考引用缺失的情况 因为你必须显式地从Optional获取引用。
- 如同输入参数,方法的返回值也可能是null。和其他人一样,你绝对很可能会忘记别人写的方法method(a,b)会返回一个null,就好像当你实现method(a,b)时,也很可能忘记输入参数a可以为null。将方法的返回类型指定为Optional,方法的参数设置为Optional,也可以迫使调用者思考返回的引用缺失的情形。
- isPresent方法可以判断实例是否为null,防止NullPointException发生;
- 若引用为null则快速失败,如果有null值存在即刻报错而不是只要上下文接受处理null值就默认使用null值继续运行
方法:
1.常用静态方法:
Optional.of(T) | 根据给定的引用创建Optional实例,若T为null,则抛出NullPointerException |
Optional.absent() | 创建一个不包含任何引用的Optional实例 |
Optional.fromNullable(T) | 根据给定的引用创建Optional实例,若T为null,则创建一个Optional.absent |
2.实例方法:
boolean isPresent() | 如果Optional实例持有者包含一个非null的实例,则返回True,否则返回false |
T get() | 如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则抛IllegalStateException |
T or(T defaultValue) | 如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则返回这个defaultValue |
T orNull() | 如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则返回null |
Set<T> asSet() | 如果Optional实例持有者包含一个非null的实例,则返回一个只有一个元素的不可变Set,否则返回一个空Set |
public class TestGuava { public static void main(String[] args) { Optional<Integer> a = Optional.of(15); Optional<Integer> b = Optional.absent(); System.out.println(sum(a,b)); } public static int sum(Optional<Integer> a,Optional<Integer> b){ if(a.isPresent()&&b.isPresent()){ return a.get()+b.get(); } return 0; } }
字符串工具
Joiner
import java.util.Arrays; import com.google.common.base.Joiner; public class GuavaTester { public static void main(String args[]){ GuavaTester tester = new GuavaTester(); tester.testJoiner(); } private void testJoiner(){ System.out.println(Joiner.on(",") .skipNulls() .join(Arrays.asList(1,2,3,4,5,null,6))); } }
Splitter
import com.google.common.base.Splitter; public class GuavaTester { public static void main(String args[]){ GuavaTester tester = new GuavaTester(); tester.testSplitter(); } private void testSplitter(){ System.out.println(Splitter.on(',') .trimResults() .omitEmptyStrings() .split("the ,quick, , brown , fox, jumps, over, the, lazy, little dog.")); } }
LoadingCache
提供一种localcache的实现方案