Guava使用有一段时间了,总结一下。
【资源】
官网:http://code.google.com/p/guava-libraries/
>WHY Guava
http://stackoverflow.com/questions/4542550/what-are-the-big-improvements-between-guava-and-apache-equivalent-libraries
>如何学习
目前没有CookBook之类的书,主要资料就是官网的Wiki(强烈推荐)及 几个Google的pdf文档。
这里强调一下Wiki的重要性,API只是说明库的使用,而为什么要实现这些API,有哪些好处就必须阅读上面的资料了。(如wiki中对,NULL值得危害还防御策略,不可变性的好处等都做了细致的论述。)
>QA(国内好像用得还不多,只能推荐英文的了)
http://stackoverflow.com/questions/tagged/guava
【关于依赖包】
有两个,都是引入注解的。
jsr305-1.3.9.jar
大量使用 @Nullable 等,方便FindBugs这样的工具来检测bug。对代码机能无影响。
javax.inject-1.jar
只在 com.google.common.util.concurrent.ServiceManager 类中涉及到注入的内容
【关于代码中的注解】
com.google.common.annotations 下的有这几个注解类经常出现在代码中:
@Beta
这个标识很有意思,它标识此API是"not API-frozen"的,即未来版本中它可能修改或删除。也就是提醒使用者使用它要慎重。
@GwtCompatible / @GwtIncompatible
分别表示GWT兼容 和 GWT不兼容(这个可以无视)
@VisibleForTesting
该类只用于测试代码中
【Guava库特点】
Guava 是Goolge的基础类库,整体质量不必说。有哪些好东西值得学习呢。
1)编码风格包括注释与JDK 高度一致,特别是阅读 com.google.common.collect 感受最为明显。
具备“准JDK”的基本条件。
2)大量使用工厂方法
典型的方法名有:
of() / copyOf()
create() / builder() / newBuilder()
newXXX (XXX为类名)
3)防御性编程的优良典范
Null值防御: 包中 checkNotNull()方法随处可见。
不可变类(Immutablexxx,尽可能使用final)
4)大量使用连缀编程(类似JQuery),程序精简而优雅。又可分为两种:
>用调用自身方法
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(1000) //配置参数maximumSize .expireAfterWrite(10, TimeUnit.MINUTES) //配置参数expireAfterWriteNanos .removalListener(MY_LISTENER) //配置参数removalListener .build();
一般这类方法最后都有一句“return this”,搜索可以发现,Guava包中有200以上的“return this”。
>用多次构造实现
Splitter.on("\n") .omitEmptyStrings() //配置参数omitEmptyStrings 设为true .trimResults(CharMatcher.is('|')) //配置参数trimmer .limit(5) //配置参数limit .split(strObject);
上面on() omitEmptyStrings() trimResults() limit() 四个方法分别new Splitter(),只是后者会复用前者的成员变量。
5)其他种种 Effectiv Java
>相比继承更加推荐组合(如:ForwardXXX
集合类,一个装饰模式实现)
>enum 实现单例模式(如:Functions类中 ToStringFunction)
>序列化代理模式(如:LocalCache类中 ManualSerializationProxy)
。。。
【小结】
作为Apache Commons的替代,Guava的起点较高,维护和更新要频繁得多,有Google的强大资源和技术优势,相信未来应用会逐渐超过Commons。
相关推荐
### Guava入门指南知识点详解 #### 一、Guava概述 Guava是Google推出的一款开源核心类库,它为Java开发者提供了丰富的工具类和实用工具集合。Guava旨在提高编程效率的同时确保代码的高质量和稳定性。它包含了大量...
Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,涵盖了集合、并发、I/O、字符串处理、数学运算等多个方面。这个压缩包包含的是Guava库的18.0版本,分为两个部分:`guava-18.0.jar`和`guava-18.0...
在标题和描述中提到的"guava-23.0.zip"是一个包含Guava库版本23.0的压缩文件,而"guava.jar"则是Guava库的JAR文件,"guava"可能指的是Guava库本身或者与其相关的其他内容。 Guava库的核心特性包括: 1. **集合框架...
【标题】: Guava学习入门共51页.pdf.zip 【描述】: 该压缩包文件包含了一份51页的PDF文档,主题是关于Guava库的学习入门教程。Guava是Google开发的一个Java库,提供了许多核心库的功能,如集合、缓存、原生类型支持...
guava
赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:guava-23.0.pom; 包含翻译后的API文档:guava-23.0-javadoc-API文档-中文...
赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:guava-17.0.pom; 包含翻译后的API文档:guava-17.0-javadoc-API文档-中文...
Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,极大地丰富了标准库的功能。在Java开发中,Guava库被广泛使用,因为它包含了大量的集合框架、并发支持、缓存机制、字符串处理、I/O操作等多个...
guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...
赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...
赠送jar包:guava-18.0.jar; 赠送原API文档:guava-18.0-javadoc.jar; 赠送源代码:guava-18.0-sources.jar; 包含翻译后的API文档:guava-18.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...
这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-19.0.jar和guava-23.0.jar。每个版本都有其特定的功能和改进,让我们逐一探讨这些版本的关键特性。 1. guava-2.6.2.jar:这是...
赠送jar包:guava-11.0.2.jar; 赠送原API文档:guava-11.0.2-javadoc.jar; 赠送源代码:guava-11.0.2-sources.jar; 赠送Maven依赖信息文件:guava-11.0.2.pom; 包含翻译后的API文档:guava-11.0.2-javadoc-API...
谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...
这里提到的"guava-21.0-rc2"、"guava-21.0-rc2-javadoc"和"guava-21.0-rc2-sources"分别代表了Guava库的21.0 Release Candidate 2版本的不同组成部分。 1. **guava-21.0-rc2**: 这是Guava库的二进制发行版,包含了...
赠送jar包:guava-30.0-jre.jar; 赠送原API文档:guava-30.0-jre-javadoc.jar; 赠送源代码:guava-30.0-jre-sources.jar; 赠送Maven依赖信息文件:guava-30.0-jre.pom; 包含翻译后的API文档:guava-30.0-jre-...
Guava是Google为Java平台设计并维护的一个开源库,它提供了许多高级功能和实用工具,极大地增强了Java开发的效率和代码质量。Guava 26.0-jre版本是针对Java运行时环境(JRE)优化的一个特定版本,旨在更好地支持Java...
赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...