`
duanhengbin
  • 浏览: 384915 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Guava 入门篇

 
阅读更多

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入门指南培训PPT

    ### Guava入门指南知识点详解 #### 一、Guava概述 Guava是Google推出的一款开源核心类库,它为Java开发者提供了丰富的工具类和实用工具集合。Guava旨在提高编程效率的同时确保代码的高质量和稳定性。它包含了大量...

    guava-18.0(guava-18.0.jar和guava-18.0-sources.jar)

    Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,涵盖了集合、并发、I/O、字符串处理、数学运算等多个方面。这个压缩包包含的是Guava库的18.0版本,分为两个部分:`guava-18.0.jar`和`guava-18.0...

    guava-23.0.zip guava.jar guava

    在标题和描述中提到的"guava-23.0.zip"是一个包含Guava库版本23.0的压缩文件,而"guava.jar"则是Guava库的JAR文件,"guava"可能指的是Guava库本身或者与其相关的其他内容。 Guava库的核心特性包括: 1. **集合框架...

    Guava学习入门共51页.pdf.zip

    【标题】: Guava学习入门共51页.pdf.zip 【描述】: 该压缩包文件包含了一份51页的PDF文档,主题是关于Guava库的学习入门教程。Guava是Google开发的一个Java库,提供了许多核心库的功能,如集合、缓存、原生类型支持...

    guava-31.1-jre.jar

    guava

    guava-23.0-API文档-中文版.zip

    赠送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文档-中文...

    guava-17.0-API文档-中文版.zip

    赠送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-19.0 jar和sources

    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源文档guava源文档...

    guava-20.0-API文档-中文版.zip

    赠送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文档-中文...

    guava-18.0-API文档-中文版.zip

    赠送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多个版本jar包

    这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-19.0.jar和guava-23.0.jar。每个版本都有其特定的功能和改进,让我们逐一探讨这些版本的关键特性。 1. guava-2.6.2.jar:这是...

    guava-11.0.2-API文档-中文版.zip

    赠送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...

    google开源项目guava.jar包

    谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...

    不加密Google Guava视频教程.txt

    ├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...

    Guava 工程项目包 有实例

    Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...

    guava-21.0-rc2 、guava-21.0-rc2-javadoc 、guava-21.0-rc2-sources

    这里提到的"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库的二进制发行版,包含了...

    guava-30.0-jre-API文档-中文版.zip

    赠送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-26.0-jre.zip

    Guava是Google为Java平台设计并维护的一个开源库,它提供了许多高级功能和实用工具,极大地增强了Java开发的效率和代码质量。Guava 26.0-jre版本是针对Java运行时环境(JRE)优化的一个特定版本,旨在更好地支持Java...

    guava-20.0-API文档-中英对照版.zip

    赠送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文档-中文...

Global site tag (gtag.js) - Google Analytics